Чтобы получить значение элемента в XML-документе, я пишу что-то вроде этого:
XmlNodeList nodo = documentoXml.GetElementsByTagName("Fecha");
Это возвращает мне список элементов с указанным именем, и я могу получить доступ к их значениям по их положению в списке. Например:
string Fecha = nodo[0].InnerXml;
Но если у элемента есть дочерние элементы, такие как элемент Detail, как я могу получить их значения? например:
<?xml version="1.0" encoding="UTF-8"?>
-<FacturaElectronica xmlns="https://tribunet.hacienda.go.cr/docs/esquemas/2017/v4.2/facturaElectronica" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Clave>50628031800310140886100100001010000000003145592145</Clave>
<NumeroConsecutivo>00100001010000000003</NumeroConsecutivo>
<FechaEmision>2018-03-28T08:00:24-04:00</FechaEmision>
-<Emisor>
<Nombre>NEOTECNOLOGIAS SA</Nombre>
-<Identificacion>
<Tipo>02</Tipo>
<Numero>3101408861</Numero>
</Identificacion>
<NombreComercial>NEOTECNOLOGIAS SA</NombreComercial>
-<Ubicacion>
<Provincia>1</Provincia>
<Canton>02</Canton>
<Distrito>01</Distrito>
<Barrio>01</Barrio>
<OtrasSenas>CENTRO CORPORATIVO PLAZA ROBLE EDIFICIO LAS TERRAZAS 5TO PISO</OtrasSenas>
</Ubicacion>
-<Telefono>
<CodigoPais>506</CodigoPais>
<NumTelefono>40701540</NumTelefono>
</Telefono>
-<Fax>
<CodigoPais>506</CodigoPais>
<NumTelefono>40701540</NumTelefono>
</Fax>
<CorreoElectronico>[email protected]</CorreoElectronico>
</Emisor>
-<Receptor>
<Nombre>Dental Care</Nombre>
-<Identificacion>
<Tipo>02</Tipo>
<Numero>3001123208</Numero>
</Identificacion>
<NombreComercial>Dental Care</NombreComercial>
-<Ubicacion>
<Provincia>1</Provincia>
<Canton>01</Canton>
<Distrito>01</Distrito>
<Barrio>01</Barrio>
<OtrasSenas>Amon</OtrasSenas>
</Ubicacion>
-<Telefono>
<CodigoPais>506</CodigoPais
<NumTelefono>40701590</NumTelefono>
</Telefono>
-<Fax>
<CodigoPais>506</CodigoPais>
<NumTelefono>40701590</NumTelefono>
</Fax>
<CorreoElectronico>[email protected]</CorreoElectronico>
</Receptor>
</FacturaElectronica>
Как я могу получить значения дочерних элементов Number и Reference узла Detail?
Что ж, в зависимости от вашего способа работы вы восстанавливаете узел Detail и внутри него восстанавливаете узлы (которые будут подузлами) и указываете, какие из них вы хотите восстановить.
Прилагаю небольшой код, я не то чтобы C#, я остался на VB, но надеюсь вы поняли идею.
Если вы решитесь использовать linq to xml, вы можете использовать что-то вроде этого
как вы увидите, очень просто работать с узлами и преобразовывать их в объекты
Одним из способов получения значений элементов XML-документа является использование синтаксиса XPATH, таким образом, к нему можно получить доступ напрямую или случайным образом в зависимости от его положения в документе...
я объясняю
Например, если в документе есть несколько элементов с именем Number и мы хотим получить значение второго элемента этого типа, мы делаем следующее: