2017-12-05 26 views
0

XMLファイルからデータSHILS_Vを取得する必要があります。私は、例えばコンソールにxml貼り付け

XMLコードを.xmlの読み:

<SVED_PR_GS> 
      <ZGLV> 
      <VERSION>99</VERSION> 
      <DATA>9999</DATA> 
      <FILENAME>1234</FILENAME> 
      <FIRSTNAME>1234</FIRSTNAME> 
      </ZGLV> 
      <SVD> 
      <CODE></CODE> 
      <YEAR></YEAR> 
      <MONTH></MONTH> 
      </SVD> 
      <SV_PR_GS> 
      <OBSV> 
       <N_ZAP>1</N_ZAP> 
       <MO_SV_V>12345</MO_SV_V> 
       <SNILS_V>123456789</SNILS_V> 
      </OBSV> 
      </SV_PR_GS> 
</SVED_PR_GS> 

私のコードXMLを読むために:

XmlDocument xml = new XmlDocument(); 
xml.Load(filename); 
Console.WriteLine("this"); 
XmlNodeList nodes = xml.GetElementsByTagName("SVED_PR_GS/SV_PR_GS"); 

foreach (XmlNode n in nodes) 
{ 
    Console.WriteLine("in loop"); 
    XmlNode snils_v = n["OBSV/SNILS_V"]; 
    Console.WriteLine("Snils V: " + snils_v); 
} 

問題がありますか? SNILS_Vから情報を取得するには?

+0

は 'snils_v.value'をお試しください... – ViRuSTriNiTy

答えて

0

XMLから単一ノードを選択する。 SelectSingleNodeメソッドを使用してそのオブジェクトにアクセスする必要があります。あなたは

xml.SelectNodes("xpath for node collection") 
1

GetElementsByTagNameを書くことができるノードのコレクションを取得するには

xml.SelectSingleNode("xpath for node") 

は "SV_PR_GS" が動作する、タグ名ではなく、XPath式を期待しています。また、XmlNodeインスタンスのインデクサーにもnという名前が付いていますが、このXPathは機能しません。n["OBSV/SNILS_V"]もそこにタグ名を使用しますが、そこに余分なOBSVの子を処理する必要があります。 Value特性は、型のXmlElementであるXmlNodeのためにnullを返すこと

XmlNodeList nodes = xml.GetElementsByTagName("SV_PR_GS"); 

foreach (XmlNode n in nodes) 
{ 
    Console.WriteLine("in loop"); 
    // first get the OBSV element 
    XmlNode obsv = n["OBSV"]; 
    // now we can reach the other childs 
    XmlNode snils_v = obsv["SNILS_V"]; 
    // Value will be null for XmlElement types, use InnerText instead 
    Console.WriteLine("Snils V: {0}" , snils_v.InnerText); 
} 

お知らせ:

は、ここで私のための出力を生成し、あなたの適応コードです。 XmlNode.Valueのドキュメントには、

nullが記載されています。 XmlElement.InnerTextまたはXmlElement.InnerXmlプロパティを使用すると、要素ノードの値にアクセスできます。

SNILS_V要素には値が含まれているように見えますが、InnerTextが適切です。

0

次のように値を得ることができる必要があります:

XmlDocument xml = new XmlDocument(); 
xml.Load(filename); 
Console.WriteLine("this"); 
XmlNodeList nodes = xml.GetElementsByTagName("OBSV"); 

foreach (XmlNode n in nodes) 
{ 
    Console.WriteLine("in loop"); 
    XmlNode snils_v = n.SelectSingleNode("SNILS_V"); 
    Console.WriteLine("Snils V: " + snils_v.InnerText); 
} 
関連する問題