如何从 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"而不是值字符串。我做错了什么?

如何从 Xml 文件中获取逗号分隔的值

您需要过滤一个属性,然后返回另一个属性,如下所示:

    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.

我搜索了元素本地名称而不是名称,因为您的问题中可能未显示默认命名空间。