Saltar al contenido

Error de XML: hay varios elementos raíz

Nuestros mejores programadores agotaron sus reservas de café, en su búsqueda todo el tiempo por la respuesta, hasta que Adán encontró la contestación en GitLab así que hoy la comparte contigo.

Solución:

Puede hacerlo sin modificar el flujo XML: Dígale al XmlReader que no sea tan quisquilloso. Configuración de la XmlReaderSettings.ConformanceLevel para ConformanceLevel.Fragment permitirá que el analizador ignore el hecho de que no hay un nodo raíz.

        XmlReaderSettings settings = new XmlReaderSettings();
        settings.ConformanceLevel = ConformanceLevel.Fragment;
        using (XmlReader reader = XmlReader.Create(tr,settings))
        
             ...
        

Ahora puede analizar algo como esto (que es un flujo XML en tiempo real, donde es imposible ajustarlo con un nodo).


  1354902435238
  7073822


  
  7d1300786a0000000bf9458b0518000000000000000000000000000000000c0c030306001b


  
  fd1260780912ff3028fea5ffc0387d640fa550f40fbdf7afffe001fff8200fff00f0bf0e000042201421100224ff40312300111400004f000000e0c0fbd1e0000f10e0fccc2ff0000f0fe00f00f0eed00f11e10d010021420401


  
  fd126078ad11fc4015fefdf5b042ff1010223500000000000000003007ff00f20e0f01000e0000dc0f01000f000000000000004f000000f104ff001000210f000013010000c6da000000680ffa807800200000000d00c0f0

Tienes que adjuntar tu los elementos en un elemento circundante como documentos XML solo pueden tener un nodo raíz:

 
    
        
            Text
        
    
    
        
            
                Text
            
            
                Text
            
        
        
            Text
        
    
 

Como está recibiendo este marcado de otro lugar, en lugar de generarlo usted mismo, es posible que deba hacerlo usted mismo tratando la respuesta como un string y envolviéndolo con las etiquetas apropiadas, antes de intentar analizarlo como XML.

Entonces, tienes un par de opciones:

  1. Haz que el proveedor del servicio web te devuelva real XML que tiene un nodo raíz
  2. Preprocesar el XML, como sugerí anteriormente, para agregar un nodo raíz
  3. Preprocesar el XML para dividirlo en varios fragmentos (es decir, uno para cada nodo) y procesar cada uno como un documento XML distinto

Envuelva el xml en otro elemento



    
        Text
    


    
        
            Text
        
        
            Text
        
    
    
        Text
    


Recuerda que puedes comunicar este artículo si te fue útil.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *