读取 CDATA 中的数据
Read Data in CDATA
我不知道是否有人可以帮助我我在 C# 中工作并且我有一个 xml 如下所示:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<autorizacion>
<estado>AUTORIZADO</estado>
<numeroAutorizacion>0105202001179184765200120010010144295491442954919</numeroAutorizacion>
<fechaAutorizacion>2020-05-01T00:29:47-05:00</fechaAutorizacion>
<ambiente>PRODUCCIÓN</ambiente>
<comprobante>
<![CDATA[<?xml version="1.0" encoding="utf-8" standalone="no"?>
<factura id="comprobante" version="1.1.0">
<infoTributaria>
<ambiente>2</ambiente>
<tipoEmision>1</tipoEmision>
<razonSocial>Servicios de Telecomunicaciones SETEL S.A.</razonSocial>
<nombreComercial>Setel</nombreComercial>
<ruc>1791847652001</ruc>
<claveAcceso>0105202001179184765200120010010144295491442954919</claveAcceso>
<codDoc>01</codDoc>
<estab>001</estab>
<ptoEmi>001</ptoEmi>
<secuencial>014429549</secuencial>
<dirMatriz>AV. ELOY ALFARO N44-406 Y DE LAS HIGUERAS EDIF.GRUPO TVCABLE</dirMatriz>
</infoTributaria>
<infoFactura>
<fechaEmision>01/05/2020</fechaEmision>
<contribuyenteEspecial>1308</contribuyenteEspecial>
<obligadoContabilidad>SI</obligadoContabilidad>
<tipoIdentificacionComprador>04</tipoIdentificacionComprador>
<razonSocialComprador>INMOBILIARIA VINMOBI CIA LTDA</razonSocialComprador>
<identificacionComprador>0190332799001</identificacionComprador>
<direccionComprador>AZUAY - CUENCA - LAS PENCAS II - URBANO | AV. ORDOÑEZ LAZO #S/N Y DE LA HIGUERILLA |</direccionComprador>
<totalSinImpuestos>186.90</totalSinImpuestos>
<totalDescuento>0.00</totalDescuento>
<totalConImpuestos>
<totalImpuesto>
<codigo>2</codigo>
<codigoPorcentaje>2</codigoPorcentaje>
<baseImponible>186.90</baseImponible>
<tarifa>12.00</tarifa>
<valor>22.43</valor>
</totalImpuesto>
</totalConImpuestos>
<propina>0.00</propina>
<importeTotal>209.33</importeTotal>
<moneda>DOLAR</moneda>
<pagos>
<pago>
<formaPago>20</formaPago>
<total>209.33</total>
<plazo>10</plazo>
<unidadTiempo>dias</unidadTiempo>
</pago>
</pagos>
</infoFactura>
<detalles>
<detalle>
<codigoPrincipal>940-0000012-500034</codigoPrincipal>
<descripcion>Servicio Internet Corporativo - TVCABLE PROFESIONAL 120 F 2:1</descripcion>
<cantidad>1.00</cantidad>
<precioUnitario>185.90</precioUnitario>
<descuento>0.00</descuento>
<precioTotalSinImpuesto>185.90</precioTotalSinImpuesto>
<detallesAdicionales>
<detAdicional nombre="Desde" valor="0"/>
<detAdicional nombre="Hasta" valor="0"/>
<detAdicional nombre="Categoria" valor="INTERNET|(IVA)"/>
</detallesAdicionales>
<impuestos>
<impuesto>
<codigo>2</codigo>
<codigoPorcentaje>2</codigoPorcentaje>
<tarifa>12.00</tarifa>
<baseImponible>185.90</baseImponible>
<valor>22.31</valor>
</impuesto>
</impuestos>
</detalle>
</detalles>
</factura>
]]>
</comprobante>
<mensajes/>
</autorizacion>
那是 xml 的一部分,所以我需要将
CDATA 中的值,如 <ruc>
、<razonSocial>
等。
我使用这段代码读取 CDATA 之外的数据并且它有效
完美。
string Ruta = "";
OpenFileDialog EscogerRuta = new OpenFileDialog { Filter = "XLM (*.xml)|*.xml", FilterIndex = 1, Multiselect = false };
if (EscogerRuta.ShowDialog() == DialogResult.OK)
Ruta = EscogerRuta.FileName;
if (Ruta != "")
{
XmlDocument Documento = new XmlDocument();
Documento.Load(Ruta);
string valor = Documento.DocumentElement.SelectSingleNode("/autorizacion/estado").InnerText;
if (valor == "AUTORIZADO")
{
TxtAutorizacion.Text = Documento.DocumentElement.SelectSingleNode("/autorizacion/numeroAutorizacion").InnerText;
}
}
您需要两个解析步骤。首先像往常一样解析外部文档。这将创建一个树,其中 comprobante
的内容包含在单个文本节点中。获取此文本节点的字符串值,并调用 XML 解析器将其解析为 XML;所以你现在有一个内部解析的 XML 文档,你可以用通常的方式导航它。
我不知道是否有人可以帮助我我在 C# 中工作并且我有一个 xml 如下所示:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<autorizacion>
<estado>AUTORIZADO</estado>
<numeroAutorizacion>0105202001179184765200120010010144295491442954919</numeroAutorizacion>
<fechaAutorizacion>2020-05-01T00:29:47-05:00</fechaAutorizacion>
<ambiente>PRODUCCIÓN</ambiente>
<comprobante>
<![CDATA[<?xml version="1.0" encoding="utf-8" standalone="no"?>
<factura id="comprobante" version="1.1.0">
<infoTributaria>
<ambiente>2</ambiente>
<tipoEmision>1</tipoEmision>
<razonSocial>Servicios de Telecomunicaciones SETEL S.A.</razonSocial>
<nombreComercial>Setel</nombreComercial>
<ruc>1791847652001</ruc>
<claveAcceso>0105202001179184765200120010010144295491442954919</claveAcceso>
<codDoc>01</codDoc>
<estab>001</estab>
<ptoEmi>001</ptoEmi>
<secuencial>014429549</secuencial>
<dirMatriz>AV. ELOY ALFARO N44-406 Y DE LAS HIGUERAS EDIF.GRUPO TVCABLE</dirMatriz>
</infoTributaria>
<infoFactura>
<fechaEmision>01/05/2020</fechaEmision>
<contribuyenteEspecial>1308</contribuyenteEspecial>
<obligadoContabilidad>SI</obligadoContabilidad>
<tipoIdentificacionComprador>04</tipoIdentificacionComprador>
<razonSocialComprador>INMOBILIARIA VINMOBI CIA LTDA</razonSocialComprador>
<identificacionComprador>0190332799001</identificacionComprador>
<direccionComprador>AZUAY - CUENCA - LAS PENCAS II - URBANO | AV. ORDOÑEZ LAZO #S/N Y DE LA HIGUERILLA |</direccionComprador>
<totalSinImpuestos>186.90</totalSinImpuestos>
<totalDescuento>0.00</totalDescuento>
<totalConImpuestos>
<totalImpuesto>
<codigo>2</codigo>
<codigoPorcentaje>2</codigoPorcentaje>
<baseImponible>186.90</baseImponible>
<tarifa>12.00</tarifa>
<valor>22.43</valor>
</totalImpuesto>
</totalConImpuestos>
<propina>0.00</propina>
<importeTotal>209.33</importeTotal>
<moneda>DOLAR</moneda>
<pagos>
<pago>
<formaPago>20</formaPago>
<total>209.33</total>
<plazo>10</plazo>
<unidadTiempo>dias</unidadTiempo>
</pago>
</pagos>
</infoFactura>
<detalles>
<detalle>
<codigoPrincipal>940-0000012-500034</codigoPrincipal>
<descripcion>Servicio Internet Corporativo - TVCABLE PROFESIONAL 120 F 2:1</descripcion>
<cantidad>1.00</cantidad>
<precioUnitario>185.90</precioUnitario>
<descuento>0.00</descuento>
<precioTotalSinImpuesto>185.90</precioTotalSinImpuesto>
<detallesAdicionales>
<detAdicional nombre="Desde" valor="0"/>
<detAdicional nombre="Hasta" valor="0"/>
<detAdicional nombre="Categoria" valor="INTERNET|(IVA)"/>
</detallesAdicionales>
<impuestos>
<impuesto>
<codigo>2</codigo>
<codigoPorcentaje>2</codigoPorcentaje>
<tarifa>12.00</tarifa>
<baseImponible>185.90</baseImponible>
<valor>22.31</valor>
</impuesto>
</impuestos>
</detalle>
</detalles>
</factura>
]]>
</comprobante>
<mensajes/>
</autorizacion>
那是 xml 的一部分,所以我需要将
CDATA 中的值,如 <ruc>
、<razonSocial>
等。
我使用这段代码读取 CDATA 之外的数据并且它有效
完美。
string Ruta = "";
OpenFileDialog EscogerRuta = new OpenFileDialog { Filter = "XLM (*.xml)|*.xml", FilterIndex = 1, Multiselect = false };
if (EscogerRuta.ShowDialog() == DialogResult.OK)
Ruta = EscogerRuta.FileName;
if (Ruta != "")
{
XmlDocument Documento = new XmlDocument();
Documento.Load(Ruta);
string valor = Documento.DocumentElement.SelectSingleNode("/autorizacion/estado").InnerText;
if (valor == "AUTORIZADO")
{
TxtAutorizacion.Text = Documento.DocumentElement.SelectSingleNode("/autorizacion/numeroAutorizacion").InnerText;
}
}
您需要两个解析步骤。首先像往常一样解析外部文档。这将创建一个树,其中 comprobante
的内容包含在单个文本节点中。获取此文本节点的字符串值,并调用 XML 解析器将其解析为 XML;所以你现在有一个内部解析的 XML 文档,你可以用通常的方式导航它。