Domanda

Sto costruendo un'applicazione Silverlight 4. Sto cercando di utilizzare XElement per leggere XML. Il seguente codice non funziona per me:

        string data = @"<?xml version='1.0'>
                        <Data>
                          <TopicGroups>
                            <TopicGroup>
                              <Name>Documents</Name>
                              <Id>0</Id>
                            </TopicGroup>
                          </TopicGroups>
                          <Topics>
                            <Topic>
                              <Name>Foo stuff</Name>
                              <Id>1</Id>
                              <GroupId>0</GroupId>
                            </Topic>
                          </Topics>
                          <PlumFiles>
                            <PlumFile>
                              <Name>moons</Name>
                              <Body>we're going to the moon</Body>
                              <TypeExtension>docx</TypeExtension>
                              <Author>Frodo</Author>
                              <CreatedOn>2010-11-18T00:00:00-05:00</CreatedOn>
                            </PlumFile>
                          </PlumFiles>
                        </Data>";

        // crash here
        XElement xml = new XElement(data);

L'eccezione è:

System.Xml.XmlException: Name cannot begin with the '<' character, hexadecimal value 0x3C.

   at System.Xml.XmlConvert.VerifyNCName(String name, ExceptionType exceptionType)
   at System.Xml.XmlConvert.VerifyNCName(String name)
   at System.Xml.Linq.XName..ctor(XNamespace ns, String localName)
   at System.Xml.Linq.XNamespace.GetName(String localName, Int32 index, Int32 count)
   at System.Xml.Linq.XNamespace.GetName(String localName)
   at System.Xml.Linq.XName.Get(String expandedName)
   at System.Xml.Linq.XName.op_Implicit(String expandedName)
   at PlumPudding.MainPage.MainPage_Loaded(Object sender, RoutedEventArgs e)
   at MS.Internal.CoreInvokeHandler.InvokeEventHandler(Int32 typeIndex, Delegate handlerDelegate, Object sender, Object args)
   at MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, Int32 actualArgsTypeIndex, String eventName)} System.Exception {System.Xml.XmlException}

Che cosa potrei fare male qui?

È stato utile?

Soluzione

Si dovrebbe usare: -

XElement xml = XElement.Parse(data);

Il costruttore XElement si aspetta un XName per definire semplice il nome dell'elemento di costrutto (o una stringa che verrà implicitamente pone convertito in XName).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top