C# 在Windows8手机应用程序中解析c中的xml CDATA

C# 在Windows8手机应用程序中解析c中的xml CDATA,c#,xml,windows-phone-8,linq-to-xml,C#,Xml,Windows Phone 8,Linq To Xml,我正在尝试读取一些XML格式的数据,这是我的Windows8手机应用程序中的CDATA。以下是数据示例: <?xml version="1.0" encoding="utf-8" ?> <!DOCTYPE HolyQuran [ <!ATTLIST HolyQuran TranslationID CDATA #REQUIRED> <!ATTLIST HolyQuran Writer CDATA #REQUIRED> <!ATTLIST HolyQu

我正在尝试读取一些XML格式的数据,这是我的Windows8手机应用程序中的CDATA。以下是数据示例:

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE HolyQuran [
<!ATTLIST HolyQuran TranslationID CDATA #REQUIRED>
<!ATTLIST HolyQuran Writer CDATA #REQUIRED>
<!ATTLIST HolyQuran Language CDATA #REQUIRED>
<!ATTLIST HolyQuran LanguageIsoCode CDATA #REQUIRED>
<!ATTLIST HolyQuran Direction (rtl|ltr) #REQUIRED>
<!ELEMENT HolyQuran (Chapter+)>
<!ATTLIST Chapter ChapterID CDATA #REQUIRED>
<!ATTLIST Chapter ChapterName CDATA #REQUIRED>
<!ELEMENT Chapter (Verse+)>
<!ATTLIST Verse VerseID CDATA #REQUIRED>
<!ELEMENT Verse (#PCDATA)>
  ]>
<!-- This SQL Query Generated at 22 November 2013 01:44 (UTC) from
  www.qurandatabase.org -->
<HolyQuran TranslationID="59" Writer="Yusuf Ali" Language="English"
    LanguageIsoCode="eng" Direction="ltr">
<Chapter ChapterID="1" ChapterName="The Opening">
    <Verse VerseID="1"><![CDATA[In the name of Allah, Most Gracious, Most
                              Merciful.]]></Verse>
    <Verse VerseID="2"><![CDATA[Praise be to Allah, the Cherisher and Sustainer
                              of the worlds;]]></Verse>
    <Verse VerseID="3"><![CDATA[Most Gracious, Most Merciful;]]></Verse>
    <Verse VerseID="4"><![CDATA[Master of the Day of Judgment.]]></Verse>
    <Verse VerseID="5"><![CDATA[Thee do we worship, and Thine aid we seek.
                             ]]></Verse>
    <Verse VerseID="6"><![CDATA[Show us the straight way,]]></Verse>
    <Verse VerseID="7"><![CDATA[The way of those on whom Thou hast bestowed Thy
                             Grace, those whose (portion) is not wrath, and who go
                             not astray.]]></Verse>
</Chapter>
</HolyQuran>
我想得到一个数据结构,其中包含ChapterName、ChapterID和所有韵文内容及其对应韵文的列表。请注意,我所说的韵文内容是指CDATA。我需要使用XDocument,但我不知道如何解析这个复杂的XML

我将非常感谢任何帮助

谢谢

首先,你需要一节章节课:


我之所以使用FromXElement方法,是因为它看起来更整洁,如果需要,您可以将其内联,尽管我是从前面的帖子中得到的:var items1=xDoc.Root.ElementsChapter.ElementsVerse.Selectv=>new{Id=intv.AttributeVerseID,Content=stringv}托利斯特先生;你从以前的帖子中得到了什么?它读了所有的诗句,但我无法找到章节名。我需要一个数据结构,它代表一个章节及其章节名、章节号,以及所有的诗句以及它们的诗句ID。谢谢!很抱歉,格式不正确的评论!不,很好。但是,它似乎在那里在您提供的XML示例中没有一个CDATA。能否请您澄清您正在谈论的部分?非常感谢!我在运行它时遇到此错误:无法将类型“System.Collections.Generic.IEnumerable”隐式转换为“System.Collections.Generic.List”。存在显式转换是否缺少强制转换?这是一个错误ne:Verses=chapter.Elements.SelectVerse.FromXElement}我在将其转换为列表后将其编译。但现在,当我运行应用程序时,它会崩溃@很抱歉,我忘了使用ToList。现在已经解决了:如何创建XML文档中所有章节的列表?例如:仁慈。]]>这有两章。可以列出章节吗?@hmans:将foreach与xdoc.Root.Elements一起使用。我会提供更多帮助,但我在手机上,对不起:/
public class Chapter
{
    public int Id { get; set; }
    public string Name { get; set; } 
    public List<Verse> Verses { get; set;}
}
public class Verse
{
    public int Id { get; set; }
    public string Contents { get; set; }
    public static Verse FromXElement(XElement element)
    {
        return new Verse { Id = (int)element.Attribute("VerseID"), 
            Contents = element.Value };
    }
}
XDocument doc = //get your document
XElement chapter = doc.Root.Element("Chapter");
Chapter result = new Chapter { Id = (int)chapter.Attribute("ChapterId"), 
    Name = (string)chapter.Attribute("ChapterName"), 
    Verses = chapter.Elements().Select(Verse.FromXElement).ToList() }