如何从 Xml 文件中获取逗号分隔的值
本文关键字:分隔 获取 Xml 文件 | 更新日期: 2023-09-27 17:56:49
我有看起来像这样的xml文件(我在这个xml上有很多数据,但这是相关的行)
<add Key="CpaData" Value="62502634,10:64917154,15:205481314,20:205485754,25"/>
我需要从 CpaData 键值中获取值,就像我有一些元素(数组、列表)一样,我有一些用":"分隔的元素,比如 62502634,10 ,之后我需要访问这个卖(62502634或 10 )我的代码看起来像这样
private int GetTargetCpaData(string campaignId)
{
var path = HttpContext.Current.Server.MapPath(@"reportConfig1.xml");
XDocument doc = XDocument.Load(path);
int i = 0;
var elements = doc.Descendants("Configuration");
string cpaValues = "";
var cpaDataValues = doc.Descendants().Attributes().FirstOrDefault(node => node.Value == "CpaData").ToString();
string[] temp = cpaDataValues.Split(new string[] { ":" }, StringSplitOptions.None);
foreach (string items in temp)
{
string[] temp2 = items.Split(new string[] { "," }, StringSplitOptions.None);
if (temp2[i] == campaignId)
{
cpaValues = temp2[i + 1];
}
}
return Int32.Parse(cpaValues);
}
但由于某种原因,"cpaDataValues"返回:"add Key="CpaData"而不是值字符串。我做错了什么?
您需要过滤一个属性,然后返回另一个属性,如下所示:
var cpaDataValues = doc.Descendants() // Search all elements of the document
.Where(e => e.Name.LocalName == "add") // Look for element with local name "add"
.Where(e => (string)e.Attribute("Key") == "CpaData")// With an attribute named "Key" with value "CpaData"
.Select(e => (string)e.Attribute("Value")) // Select the value of the "Value" attribute.
.FirstOrDefault(); // And return the first found.
我搜索了元素本地名称而不是名称,因为您的问题中可能未显示默认命名空间。