12 Stimmen

Fehler :- Der XmlReader-Status sollte bei XDocument.Load interaktiv sein

Ich erhalte die folgende Fehlermeldung :-

System.InvalidOperationException: Der XmlReader st bei System.Xml.Linq.XContainer.ReadContentFrom(XmlReader r, LoadOptions o) bei System.Xml.Linq.XDocument.Load(XmlReader reader, LoadOptions options)

im folgenden Code. Kann mir jemand sagen, was ich hier falsch mache?

static XDocument GetContentAsXDocument(string xmlData)
{
    XmlDocument xmlDocument = new XmlDocument();
    if (!string.IsNullOrEmpty(xmlData))
    {
        xmlDocument.LoadXml(xmlData);
        return xmlDocument.ToXDocument();
    }
    else
    {
        return new XDocument();
    }
}

/// <summary>
///  Converts XMLDocument to XDocument
/// </summary>
/// <param name="xmlDocument"></param>
/// <returns></returns>
public static XDocument ToXDocument( this XmlDocument xmlDocument )
{
    using( var nodeReader = new XmlNodeReader( xmlDocument ) )
    {
        nodeReader.MoveToContent();
        return XDocument.Load(
             nodeReader,
            (LoadOptions.PreserveWhitespace |
             LoadOptions.SetBaseUri |
             LoadOptions.SetLineInfo));
    }
}

3voto

Ryan Gates Punkte 4432

Sie sollten Folgendes verwenden XDocument.Parse y XmlDocument.OuterXml . Siehe das folgende Beispiel.

public static XDocument ToXDocument( this XmlDocument xmlDocument )
{
    string outerXml = xmlDocument.OuterXml;
    if(!string.IsNullOrEmpty(outerXml))
    {
        return XDocument.Parse(outerXml, (LoadOptions.PreserveWhitespace |
             LoadOptions.SetBaseUri |
             LoadOptions.SetLineInfo));
    }
    else
    {
        return new XDocument();
    }
}

Andere Methoden der Konvertierung von XmlDocument zu XDocument finden Sie hier .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X