在特殊 XML 结构中选择具有名称属性名称的元素
本文关键字:属性 有名称 元素 选择 XML 结构 | 更新日期: 2023-09-27 18:20:46
下面是我的XML文档的结构。我只想首先获取每个节点的值<attribute name="a">
然后将其与给定值进行比较。但是,我不知道如何使用 c# 中的 xml 选择节点找到每个节点的<attribute name="a">
。谷歌搜索没有显示任何有效的解决方案。
<nodes>
<node name = "node1">
<attribute name="a">This is node1 a</attribute>
<attribute name="b">This is node1 b</attribute>
</node>
<node name = "node2">
<attribute name="a">This is node2 a</attribute>
<attribute name="b">This is node2 b</attribute>
</node>
...
</nodes>
假设问题中的XML标记代表整个文档,您可以执行以下操作:
XmlNodeList attrElements
= yourDocument.SelectNodes("/nodes/node/attribute[@name='a']");
您可以使用 Linq to XML,如下所示:
string xml = "<nodes>...";
var results = from node in XDocument.Parse(xml).Descendants()
where node.Name == "attribute"
select node.Value;
然后,您可以根据需要循环浏览结果。
这里也有一个很好的Linq to XML概述。
使用 Linq to XML:
XElement xml = XElement.Load("test.xml");
var myNodes = xml.Descendants("attribute")
.Where(x => x.Attribute("name").Value == "a");
检索值而不是节点:
var myValues = xml.Descendants("attribute")
.Where(x => x.Attribute("name").Value == "a")
.Select(x => x.Value);
我喜欢使用 System.Xml.XmlDocument
类进行 xml 解析。
XmlDocument doc = new XmlDocument();
doc.load("myfilename.xml");
XmlNode node = doc.SelectSingleNode("''attribute[name='a']")
您应该查看一些 XPath 参考,以确保您获得的 xpath 字符串正确 http://msdn.microsoft.com/en-us/library/ms256086.aspx