我必须关注XML文件:
<root xmlns="http://someurl/element" xmlns:text="http://someurl/text">
<elements>
<element>
<Id>text:SOME_ID</Id>
<!-- some other elements -->
</element>
<element>
<!-- some other elements -->
<reference>
<link ref="text:SOME_ID" />
</reference>
</element>
</elements>
</root>
我想选择elment节点中具有元素Id = text:SOME_ID的所有子元素,如何使用xmldocument方法获取它
答案 0 :(得分:0)
根据您的问题,我并不完全清楚您要选择的内容,但我认为您要选择<element>
生成内容为<Id>
的子text:SOME_ID
。
如果您坚持使用XmlDocument
,可以像这样使用它:
IEnumerable<XPathNavigator> GetElements(String xml, String id) {
var xmlDocument = new XmlDocument();
xmlDocument.LoadXml(xml);
var namespaceManager = new XmlNamespaceManager(xmlDocument.NameTable);
namespaceManager.AddNamespace("ns", "http://someurl/element");
var navigator = xmlDocument.CreateNavigator();
var xPath = "//ns:element/ns:Id[. = '" + id + "']/..";
return navigator.Select(xPath, namespaceManager).Cast<XPathNavigator>();
}
但是,我建议使用LINQ to XML:
IEnumerable<XElement> GetElements(String xml, String id) {
XNamespace ns = "http://someurl/element";
var xDocument = XDocument.Parse(xml);
return xDocument
.Descendants(ns + "element")
.Where(element => (String) element.Element(ns + "Id") == id);
}