2017-04-21 99 views
0

我得到了这种情况,我使用函数getelementesbytagname(“”)获取了xmlnodelist上的所有元素,但有时候我可以做到这样。c#在xml元素上的相同标签名

<?xml version="1.0" encoding="UTF-8" ?> 
<Element xsi:schemaLocation="http://localhost/AML/CaseInvestigationMangement/Moduli/XmlImportControls/xsdBorrow.xsd xsd2009027_kor21.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
<nodo> 
    <nombre>nodo1</nombre> 
    <dato>1</dato> 
    <otronodo> 
     <nombre>nododentrodenodo</nombre> 
     <dato2>23</dato2> 
    </otronodo> 
</nodo> 
<nodo> 
    ... 
</nodo> 
</Element> 

如果y搜索的名称为“农布雷”好吧,我得到nodo农布雷和otronodo农布雷的所有节点。

我可以只获得nodo节点的名称吗?

回答

0

我认为你只需要​​父值为nodo的值,但是你可能想要Element的子任何​​。有了XPath和SelectNodes,你可以做任何一个,所以我在下面都包括了。 SelectNodes返回XmlNodeList,就像GetElementsByTagName()一样。

var doc = new XmlDocument(); 

doc.LoadXml(@"<?xml version=""1.0"" encoding=""UTF-8"" ?> 
<Element> 
    <nodo> 
     <nombre>nodo1</nombre> 
     <dato>1</dato> 
     <otronodo> 
      <nombre>nododentrodenodo</nombre> 
      <dato2>23</dato2> 
     </otronodo> 
    </nodo> 
    <nodo> 
     <nombre>nodo2</nombre> 
    </nodo> 
    <frodo> 
     <nombre>frodo nodo</nombre> 
    </frodo> 
</Element> 
"); 

// Any nombre whose parent is a nodo 
var nodosNombres = doc.DocumentElement.SelectNodes("//nodo/nombre"); 

// Any nombre belonging to any child of Element 
var topNombres = doc.DocumentElement.SelectNodes("/Element/*/nombre"); 
+0

谢谢,这个工程。非常感谢 –

相关问题