2011-06-04 17 views

Respuesta

5

Posiblemente podría utilizar funciones de manipulación de cadenas, ya que eso es lo que las bibliotecas XML terminan usando de todos modos. Los documentos XML son solo cadenas largas en un formato especial. Sin embargo, a menos que sepa mucho sobre XML (y qué es y no es XML válido), el uso de un analizador/serializador XML ahora le ahorrará muchos problemas más adelante. Hay matices en XML (espacios de nombres, secuencias de escape, etc.) que causarán problemas en el código interno que no sabe cómo manejarlos correctamente. Y para cuando hayas manejado todos los casos especiales, de todos modos habrás escrito un analizador XML a medias.

4

No ... Repito ... No analice ni construya XML a mano.

En mi trabajo, implementamos una gran cantidad de interfaces entre diferentes proveedores. No puedo decirte cuántas veces hemos estado trabajando en una interfaz basada en xml y hemos encontrado algún tipo de problema de codificación/decodificación de escape. Una de las primeras pruebas que ejecutaré cuando me conecte a un servicio basado en xml es poner caracteres xml ilegales en la entrada.

¿Cuál es su nombre ?: Bob <> & "

ERROR análisis del documento XML

Nos han topado tantas veces que si alguno de nuestros ingenieros comprobar nada parecido a:!!

 
xml = "<rootnode>" 
xml += "<leafnode>" + someValue + "</leafnode>" 
xml += "</rootnode>" 

vamos a considerar seriamente la posibilidad de atracar su variable de pago tan pronto como "someValue" contiene un carácter ilegal, que se pooched a continuación, el código comienza con este aspecto:..

 
xml = "<rootnode>" 
xml += "<leafnode>" + XmlEscape(someValue) + "</leafnode>" 
xml += "<leafnode>" + XmlEscape(someValue) + "</leafnode>" 
xml += "</rootnode>" 

entonces algo está todavía la voladura, por lo que el ingeniero genio trata:

 
xml = "<rootnode>" 
xml += "<leafnode>" + XmlEscape(someValue) + "</leafnode>" 
xml += "<leafnode>" + XmlEscape(someValue) + "</leafnode>" 
xml += "</rootnode>" 

xml = XmlEscape(xml) 

Nota: este proceso se ha logrado realmente a mí dos veces mientras se trabaja en una interfaz.

Antes de darse cuenta, su flujo a través del cable termina pareciéndose a

 
&amp;lt;rootnode>HELP<rootnode> 
&amp;lt;rootnode&gt;ME&amp;lt;rootnode&amp;gt; 

RESUMEN:

favor utilice una biblioteca. k thx bye.

+0

lo que la biblioteca para ser utilizado con XML? ¿Hay algún tipo de biblioteca integrada o estándar? –

+0

En Java son bibliotecas, en Ruby the're gems. Suponiendo que Java, ve al sitio web apache y mira sus herramientas. – Thufir

0

Podemos utilizar tinyXml2 y hacer que nuestro trabajo sea más fácil, basta con incluir la cabecera y cpp de tinyxml2 y Huy analizar y escribir Éntrenos en encontrar los documentos y manual en

http://www.grinninglizard.com/tinyxml2/

Cuestiones relacionadas