2010-11-18 11 views
1

Ich baue eine Silverlight 4 App. Ich versuche XElement zu verwenden, um XML zu lesen. Der folgende Code funktioniert nicht für mich:Silverlight: Fehler beim Deserialisieren von XML

 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); 

Die Ausnahme ist:

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} 

Was könnte ich falsch hier tun?

Antwort

1

sollten Sie verwenden: -

XElement xml = XElement.Parse(data); 

Der XElement Konstruktor wird ein XName erwarten einfach den Namen des Elements zu definieren, zu konstruieren (oder eine Zeichenfolge, die zu einem XName werden implizit umgewandelt werden).

+0

funktioniert gut, danke –

Verwandte Themen