2016-07-12 8 views
0

を、私はこのサンプルを持って私はC#で特定のノードの値を取得する必要がどこに問題があるのC#

XML-Code、ここでは私のC#のコード

string xml = @" 
      <ChapterHeader> 
     <Text> I need to get the text here</Text> 
    </ChapterHeader> 
      "; 
XmlReader rdr = XmlReader.Create(new System.IO.StringReader(xml)); 
      while (rdr.Read()) 
      { 
       if (rdr.NodeType == XmlNodeType.Element) 
       { 
        Console.WriteLine(rdr.LocalName); 
        if (rdr.LocalName == "ChapterHeader") 
        { 
         Console.WriteLine(rdr.Value); 
        } 
       } 
      } 

希望される使用してXMLノードの値を取得出力は、テキストノードを含む

<Text> I need to get the text here</Text> 

です。どうやってやるの?ありがとう

私は、ループ、巨大なXMLファイル

に必要と私は特定のノード

の値を取得する必要があると私はまた、いくつかの特定のノードをスキップする必要があります。 例ノードがあります。プログラムはそのNodeとそのchilden Nodeを読んではいけません。

どうすればいいですか?

<ChapterHeader> 
    <Text> I need to get the text here</Text> 
</ChapterHeader> 
<Blank> 
    <Not> 
    </Not> 
</Blank> 

答えて

0

所望の出力を文字列として、マークアップを含め、すべてのコンテンツを読み出しReadInnerXmlため

<Text> I need to get the text here</Text> 

ルックです。次の質問で

Console.WriteLine(rdr.ReadInnerXml()); 

、あなたはXml大きな対処したいです。より大きなセットを扱う場合、私はLinqXmlを好む。

プログラムは、そのノードとそのchildenノード

はい、それは可能ですが読んではいけません。あなたはこのようなことをすることができます。

XDocument doc = XDocument.Load("filepath"); 

var nestedElementValues = 
doc.Descendants("ChapterHeader") // flattens hierarchy and look for specific name. 
    .Elements()      // Get elements for found element 
    .Select(x=>(string)x.Value);  // Read the value. 

チェックこのExample

+0

働いてくれてありがとう。私は別の質問があります。親切に私を助けてください。ありがとうございました。 – askquestionzero

+0

アップデートを確認してください。 –

0

System.Xml.Linqは、望ましくない読者スタイルを取り除くために設計された新しいライブラリです。

var document = XDocument.Parse(xml); 
var texts = document.Descendants("Text"); 

foreach (var text in texts) 
{ 
    Console.WriteLine(text); 
} 
+0

こんにちはトミーを使用することができます。それは素晴らしいことです。その働き。しかし私は別の質問がある:私は巨大なXMLファイルをループする必要があります。そのサブノードの値を取得します。ノードの一部。親ノードがの場合、子ノードを読み込む必要はありません。どうやってやるの?私の2番目の質問が明確でないかどうか教えてください。よろしくお願いします。 – askquestionzero

+0

質問が更新されました。ありがとうございます – askquestionzero

+0

XMLを読む際にノードをスキップすることはできません。これは、リーダが順番に読むことなく、読者はXMLタグがどこで終わるかを知らないからです。おそらくそれに値するものではない特別なルールをあなた自身の読者が書いていない限り。あなたのファイルはどれくらいですか? – Tommy

0

は、あなたが使用している同じ解析スタイル(rdr.LocalName = "Text")を使用して、rdr.ReadOuterXml()

関連する問題