Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

174
Vistas
Caracteres de escape en nodos xml

Tengo un xml como este en la variable de cadena (cargar desde archivo)

 <Data> <Name>Test & < test> </Name> </Data>

cuando intento cargar este xml, obtuve la excepción "se produjo un error al analizar el nodo". Creo que esto se debe a & en la etiqueta de nombre. He buscado en Internet, pero todas las soluciones (por ejemplo SecurityElement.Escape ) escapan de los elementos xml principales también como mayor que gt y menor que lt y solo quiero reemplazar & en mi caso. Puedo iterar a través de xml y reemplazar solo la parte de datos, pero ¿hay alguna forma más corta?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

AngleSharp tiene un analizador "XML" de corrección de errores que funciona más como un analizador HTML5 o de sopa de etiquetas que intenta corregir y corregir dichos errores de marcado. para su muestra

 using System; using AngleSharp.Xml; using AngleSharp.Xml.Parser; namespace AngleSharpMalFormedXmlTest1 { class Program { static void Main(string[] args) { var malFormedXml = @"<Data> <Name>Test & < test> </Name> </Data>"; var doc = new XmlParser(new XmlParserOptions() { IsSuppressingErrors = true }).ParseDocument(malFormedXml); Console.WriteLine(doc.ToMarkup()); } } }

yo obtengo

 <Data> <Name>Test &amp;&lt; test&gt; </Name> </Data>

Pero una vez que abre su entrada a este tipo de XML mal formado, puede encontrarse fácilmente con conceptos erróneos e incompatibilidades o dependencia de herramientas que se pretendía evitar con el uso de un estándar W3C como XML.

over 4 years ago · Santiago Trujillo Denunciar

0

Como no tiene control sobre la fuente, puede probar algunas expresiones regulares para convertirlo en un xml válido:

 string xml = @"<Data> <Name>Test & test&amp; &1 &lt;aaa &</Name> </Data>"; xml = Regex.Replace(xml,@"&(?!\w+;)","&amp;");

esto regresará

 <Data> <Name>Test &amp; test&amp; &amp;1 &lt;aaa &amp;</Name> </Data>
over 4 years ago · Santiago Trujillo Denunciar

0

El XML presentado no está bien formado.

Puede usar la sección CData para hacer que su XML esté bien formado.

  • Cada <Name> debe convertirse en <Name><![CDATA[
  • Cada </Name> debe convertirse en ]]></Name>

XML bien formado

 <Data> <Name><![CDATA[Test & < test> ]]></Name> </Data>
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda