سؤال

أنا أبني تطبيق 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}

ماذا يمكن أن أفعل خطأ هنا؟

هل كانت مفيدة؟

المحلول

يجب أن تستخدم:-

XElement xml = XElement.Parse(data);

يتوقع مُنشئ Xelement XName لتحديد اسم العنصر البسيط للبناء (أو سلسلة سيتم تحويلها بشكل ضمني إلى XName).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top