获取xml节点属性,具体取决于同一节点的其他属性

时间:2015-05-27 15:43:13

标签: c# xml

例如,在下面的xml中,如果我有id属性,则可以在C#中获取相应的reportid属性

xml代码:

<node text=" Acid Level versus Flowmeters" nodetype="1" reportid="118" id="626" />
        <node text="Level versus Flowmeters" nodetype="1" reportid="119" id="627" />
            <node text=" Bulk Levels" nodetype="1" reportid="120" id="629" />
            <node text="Caustic and HCL" nodetype="1" reportid="121" id="630" />

c#代码:

string XMLFile = ConfigurationManager.AppSettings["XMLReportTreePath"];
XElement sitemap = XElement.Load(XMLFile);
            XAttribute xatt = sitemap.Attribute(reportid); // where id = 630

由于

2 个答案:

答案 0 :(得分:0)

这样的东西?

foreach (XmlNode chldNode in node.ChildNodes)
        {
                **//Read the attribute ID**
            if (chldNode.ID== 630)
            {   
              string reportid= chldNode.Attributes["reportid"].Value;  
            }
        }

//只是一个例子,但是我可以理解你想要的东西

答案 1 :(得分:0)

假设您的xml文档有一个根节点:

var reportid = sitemap.Descendants("node")
                      .Where(el => el.Attribute("id").Value == "630")
                      .Select(el => el.Attribute("reportid").Value)
                      .FirstOrDefault();

// or, lookup of all reportid by id
var lookup = sitemap.Descendants("node")
                    .ToDictionary(el => el.Attribute("id").Value, el => el.Attribute("reportid").Value);