0

我遇到了这种情况,我使用函数 getelementesbytagname("") 获取 xmlnodelist 上的所有元素,但有时我可以有这样的东西。

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

如果你用名称“nombre”搜索所有节点,我会得到 nodo 名词和 otronodo 名词。

我只能得到节点的名称吗?

4

1 回答 1

0

我认为您只想要nombre具有nodo父级的值,但您可能想要任何nombre来自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");
于 2017-04-21T19:26:13.603 回答