С# то же имя тега в элементе xml

я получил этот случай, я получаю все элементы в списке xmlnodelist, используя функцию getelementesbytagname (""), но иногда у меня может быть что-то вроде этого.

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

если вы ищете все узлы по имени «номбре», я получаю имя узла и имя отронодо.

Могу ли я получить только имя узла узла?


person Ernesto Chacón Pintor    schedule 21.04.2017    source источник


Ответы (1)


Я думаю, вам нужны только значения 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");
person 15ee8f99-57ff-4f92-890c-b56153    schedule 21.04.2017