Errore XML:sono presenti più elementi radice

Errore XML:sono presenti più elementi radice

Puoi farlo senza modificare il flusso XML:dì a XmlReader di non essere così schizzinoso.Impostazione di XmlReaderSettings.ConformanceLevel a ConformanceLevel.Fragment consentirà al parser di ignorare il fatto che non esiste un nodo radice.

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

Ora puoi analizzare qualcosa del genere (che è un flusso XML in tempo reale, in cui è impossibile eseguire il wrapping con un nodo).

<event>
  <timeStamp>1354902435238</timeStamp>
  <eventId>7073822</eventId>
</event>
<data>
  <time>1354902435341</time>
  <payload type='80'>7d1300786a0000000bf9458b0518000000000000000000000000000000000c0c030306001b</payload>
</data>
<data>
  <time>1354902435345</time>
  <payload type='80'>fd1260780912ff3028fea5ffc0387d640fa550f40fbdf7afffe001fff8200fff00f0bf0e000042201421100224ff40312300111400004f000000e0c0fbd1e0000f10e0fccc2ff0000f0fe00f00f0eed00f11e10d010021420401</payload>
</data>
<data>
  <time>1354902435347</time>
  <payload type='80'>fd126078ad11fc4015fefdf5b042ff1010223500000000000000003007ff00f20e0f01000e0000dc0f01000f000000000000004f000000f104ff001000210f000013010000c6da000000680ffa807800200000000d00c0f0</payload>
</data>

Devi allegare il tuo <parent> gli elementi in un elemento circostante come documenti XML possono avere un solo nodo radice:

<parents> <!-- I've added this tag -->
    <parent>
        <child>
            Text
        </child>
    </parent>
    <parent>
        <child>
            <grandchild>
                Text
            </grandchild>
            <grandchild>
                Text
            </grandchild>
        </child>
        <child>
            Text
        </child>
    </parent>
</parents> <!-- I've added this tag -->

Poiché stai ricevendo questo markup da qualche altra parte, invece di generarlo tu stesso, potresti doverlo fare tu stesso trattando la risposta come una stringa e avvolgendola con tag appropriati, prima di tentare di analizzarla come XML.

Quindi, hai un paio di scelte:

  1. Chiedi al fornitore del servizio web di restituirti effettivo XML con un nodo radice
  2. Pre-elabora l'XML, come ho suggerito sopra, per aggiungere un nodo radice
  3. Pre-elabora l'XML per dividerlo in più blocchi (cioè uno per ogni <parent> nodo) ed elaborarli come un documento XML distinto

Avvolgi l'xml in un altro elemento

<wrapper>
<parent>
    <child>
        Text
    </child>
</parent>
<parent>
    <child>
        <grandchild>
            Text
        </grandchild>
        <grandchild>
            Text
        </grandchild>
    </child>
    <child>
        Text
    </child>
</parent>
</wrapper>