0

以下のようなXMLファイルがあります。

<BOOK bnumber="1" bname="Book">
    <CHAPTER cnumber="1">
       <Sentence vnumber="1">This is the sentence 1.</Sentence>
       <Sentence vnumber="2">This is the sentence 2.</Sentence>
       <Sentence vnumber="3">This is the sentence 3.</Sentence>
   </CHAPTER>
   <CHAPTER cnumber="2">
       <Sentence vnumber="1">Hello World 1.</Sentence>
       <Sentence vnumber="2">Hello World 2.</Sentence>
       <Sentence vnumber="3">Hello World 3.</Sentence>
       <Sentence vnumber="4">Hello World 4.</Sentence>
  </CHAPTER>
  <CHAPTER cnumber="3">
       <Sentence vnumber="1">Good morning 1.</Sentence>
       <Sentence vnumber="2">Good morning 2.</Sentence>
       <Sentence vnumber="3">Good morning 3.</Sentence>
  </CHAPTER>
</BOOK>

私が欲しいのは「CHAPTER」の属性を集めることです。取得することが目標です

Chapter={"Chapter 1";"Chapter 2","Chapter 3"};

現在は伝統製法を用いており、

XmlDocument xdoc = new XmlDocument();
xdoc.Load(@"C:\books.xml"); //load the xml file into our document
XmlNodeList nodes = xdoc.SelectNodes(@"//BOOK/CHAPTER[@cnumber='" + chap
string sentences = "";
foreach(XmlNode node in nodes) {
   sentences += node.InnerText + "; ";
}

XMLファイルが大きいのでXMLReaderを使いたいのですが、メモリにロードしたくありません。

手伝ってくれてありがとう。

4

1 に答える 1

1

基本的には、次のようにできます。

        var chapters = new List<string>();
        using (XmlReader reader = XmlReader.Create(new StringReader(xmlString)))
        {
            reader.ReadToFollowing("CHAPTER");
            reader.MoveToFirstAttribute();
            string chapterNumber = reader.Value;
            chapters.Add("Chapter " + chapterNumber);
        }

xmlString はあなたの xml です。

これにより、最初の章が検索され、そこから属性が取得され、章のリストに追加されます。

于 2012-07-05T13:03:36.527 に答える