选择特殊 xml 结构中具有 name 属性 name 的元素

发布于 2024-12-27 09:28:19 字数 622 浏览 1 评论 0原文

下面是我的 xml 文档的结构。我只想首先获取每个节点 的值,然后将其与给定值进行比较。但是我不知道如何使用 c# 中的 xml selectnodes 来定位每个节点的 。谷歌搜索没有显示任何可行的解决方案。

<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>     

below is the structure of my xml document. I just want to first take the value of every node <attribute name="a"> then make a comparison of it with a given value. However I don't how to locate <attribute name="a"> of each node using xml selectnodes in c#. Google searches don't show any working solutions.

<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>     

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

独留℉清风醉 2025-01-03 09:28:19

假设您的问题中的 XML 标记代表您的整个文档,您可以执行以下操作:

XmlNodeList attrElements
    = yourDocument.SelectNodes("/nodes/node/attribute[@name='a']");

Assuming the XML markup in your question represents your whole document, you can do:

XmlNodeList attrElements
    = yourDocument.SelectNodes("/nodes/node/attribute[@name='a']");
一抹淡然 2025-01-03 09:28:19

您可以使用 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 概述

You could use Linq to XML, something like the following:

string xml = "<nodes>...";

var results = from node in XDocument.Parse(xml).Descendants()
          where node.Name == "attribute"
          select node.Value;

You could then loop through the results as required.

There is a nice Linq to XML overview here too.

江心雾 2025-01-03 09:28:19

使用 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);

Use Linq to XML:

XElement xml = XElement.Load("test.xml");
var myNodes = xml.Descendants("attribute")
                 .Where(x => x.Attribute("name").Value == "a");

To retrieve the values instead of the nodes:

var myValues = xml.Descendants("attribute")
                  .Where(x => x.Attribute("name").Value == "a")
                  .Select(x => x.Value);
如此安好 2025-01-03 09:28:19

我喜欢使用 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

I like to use the System.Xml.XmlDocument class for my xml parsing.

XmlDocument doc = new XmlDocument();
doc.load("myfilename.xml");
XmlNode node = doc.SelectSingleNode("\\attribute[name='a']")

You should have a look at some XPath reference to be sure that you're getting the xpath string right http://msdn.microsoft.com/en-us/library/ms256086.aspx

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文