Silverlight:反序列化XML时出错

时间:2010-11-18 17:49:22

标签: xml silverlight deserialization

我正在构建一个Silverlight 4应用程序。我正在尝试使用XElement来读取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);

例外是:

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}

我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

你应该使用: -

XElement xml = XElement.Parse(data);

XElement构造函数期望XName定义要构造的元素的名称(或者将被隐式转换为XName的字符串)。