簡體   English   中英

c#xml元素上的相同標簽名稱

[英]c# same tag name on a xml element

我遇到這種情況,我使用功能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 nombre和otronodo nombre。

我只能獲取nodo節點的名稱嗎?

我認為您只需要具有nodo父級的nombre值,但是有可能希望從Element任何子級獲得任何nombre 使用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");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM