3

ノードをループして属性の値を取得する XML ファイルがあります。

しかし、属性値とともに、出力にいくつかの記号(長方形のボックス)も取得しています。タグ間のスペースを削除しようとすると、問題ありませんでした。

以下の XML では、タイトルの内部テキストを取得しています。

 <catalog>
  <book id="bk101">
   <details>
    <title>XML Developer's Guide</title>
   </details>
  </book>
  </catalog>

私の入力が次のようであれば問題ありませんでした:

  <catalog>
   <book id="bk101">
   <details><title>XML Developer's Guide</title></details>
   </book>
  </catalog>

私はC#を使用しています

 foreach (XmlNode catalogid in Xmlcontent.GetElementsByTagName("catalog"))
      {
        foreach (XmlNode bookid in catalogid)
                    {
                        foreach (XmlNode titleid in bookid)
                        {
                       string booktitle = titleid.InnerText.ToString();
                        }
                     }
      }

出力で空白と改行を無視する方法を提案してください。

4

2 に答える 2

1

.Net 2.0の使用に制限されていますか?その場合、以下を無視してください。

.Net 3.5を使用できる場合は、次のLinq-To-Xmlが機能します。

  1. 最初にファイルをロードします
  2. あなたがしたようにすべてのカタログ要素を取得します
  3. 次に、カタログのすべての本を選択します
  4. 書籍のIDとタイトルを取得する
  5. すべてのカタログのすべての本を配列として1つの可変本に割り当てます。

XElement root = XElement.Load(file);
var catalogs = root.Descendants("catalog");
var books = catalogs.SelectMany(c => 
    c.Descendants("book").Select(book => new
    {
        Id = book.Attribute("id").Value,
        Title = book.Descendants("title").First().Value
    }))
    //.OrderBy(b => b.Title)  // sort by title or id if you'd like.
    .ToArray();
于 2012-09-19T21:11:09.800 に答える
1

PreserveWhitespace プロパティに基づいてこのコードを試すことができます

XmlDocument doc = new XmlDocument();
....
....
doc.PreserveWhitespace = false;

リンク: http://msdn.microsoft.com/en-us/library/system.xml.xmldocument.preservewhitespace.aspx

于 2012-09-13T09:04:26.007 に答える