获取 XmlNode 给定其 XmlAttributes 之一
Getting an XmlNode given one of its XmlAttributes
我有一个这样的 XmlNode:
XmlNode node = document.GetElementById("myid");
鉴于其属性:
XmlAttribute a = node.Attributes("type");
有没有办法取回节点?
像这样:
XmlNode node = a.Node;
我试过ParentNode
,但好像不行(返回null
)。
XmlElement node = a.OwnerElement;
或使用 XPath:
XmlNode node = a.SelectSingleNode("..");
在灵活性方面,第一种方法要求变量 a
已经是一个 XmlAttribute
或者要求您将其转换为一个,但它给您一个 XmlElement
没有需要显式转换。
相比之下,a
只需要是 XmlNode
就可以使用第二种方法,但是方法上的 return 值也是 XmlNode
。
这个 SO 线程应该可以回答您的问题
Search XML file for nodes with specific attribute value in .NET 2.
XPath 也是一个选项,因为在获得所有匹配的元素后,您可以使用 Linq 获得您感兴趣的特定节点。
我有一个这样的 XmlNode:
XmlNode node = document.GetElementById("myid");
鉴于其属性:
XmlAttribute a = node.Attributes("type");
有没有办法取回节点?
像这样:
XmlNode node = a.Node;
我试过ParentNode
,但好像不行(返回null
)。
XmlElement node = a.OwnerElement;
或使用 XPath:
XmlNode node = a.SelectSingleNode("..");
在灵活性方面,第一种方法要求变量 a
已经是一个 XmlAttribute
或者要求您将其转换为一个,但它给您一个 XmlElement
没有需要显式转换。
相比之下,a
只需要是 XmlNode
就可以使用第二种方法,但是方法上的 return 值也是 XmlNode
。
这个 SO 线程应该可以回答您的问题 Search XML file for nodes with specific attribute value in .NET 2.
XPath 也是一个选项,因为在获得所有匹配的元素后,您可以使用 Linq 获得您感兴趣的特定节点。