2017-11-29 10 views
0

私がしようとしているのは正確です: xml要素の値と属性を同時に読み取ることができます。 私の英語はあまり良くありません。これで申し訳ありません。xml要素の内容と属性を同時に読むc#

<all> 
    <hp id="1" t="K" k="1">DÖNEN VARLIKLAR</hp> 
    <hp id="10" t="K" k="10">HAZIR DEĞERLER</hp> 
    <hp id="100" t="K" k="100">KASA</hp> 
    <hp id="1" t="B" k="100.02">ŞUBE KASASI</hp> 
    <hp id="5417" t="B" k="100.Y0001">Yeni Hesap Adı</hp> 
</all> 

このmy xmlファイル。 私は、HPの要素の値とkの属性を読みたいと私はdatagridview.Thisの列の下の行に私のC#のコードを、私は読んで値を入れたい:

dataGridView2.ColumnCount = 2; 
     dataGridView2.Columns[0].Name = "Hesap Kodu"; 
     dataGridView2.Columns[1].Name = "Hesap Adı"; 

     XDocument xDoc = XDocument.Load(@"C:\Luca_Offline_Yerel\hp461979110642727.xml"); 
     XElement rootElement = xDoc.Root; 

     XmlDocument i = new XmlDocument(); 
     i.Load(@"C:\Luca_Offline_Yerel\hp461979110642727.xml"); 
     XmlNodeList xnList = i.SelectNodes("/all/hp"); 

     DataSet ds = new DataSet(); 
     //xml dosyamızı okumak için bir reader oluşturuyoruz. 
     XmlReader xmlFile; 
     xmlFile = XmlReader.Create(@"C:\Luca_Offline_Yerel\hp461979110642727.xml", new XmlReaderSettings()); 
     //içeriği Dataset e aktarıyoruz. 
     ds.ReadXml(xmlFile); 
     //datagridviewin kaynağı olarak dataseti gösteriyoruz. 




     String Kod, Ad; 
     foreach (XElement rehberimiz in rootElement.Elements()) 
     { 
      //yapmam gereken ad'a hp nin element içeriğini ekleme! 
      Kod = rehberimiz.Attribute("k").Value; 
      Ad = rehberimiz.Element("hp_Text").Value; 
      dataGridView2.Rows.Add(Kod, Ad); 
     } 

しかし、私は、この行にエラーが発生します。

Ad = rehberimiz.Element("hp_Text").Value; 
+3

あなたの投稿にエラーの詳細を追加できますか? – CalC

+0

あなたはどんなエラーがありますか? –

+0

Ad = rehberimiz.Element( "hp")である必要があります。 – urlreader

答えて

0

を次のように行います。

XmlDocument xmlDocument = new XmlDocument(); 
     xmlDocument.Load("XMLFile1.xml"); 

     XmlNode oRootNode = xmlDocument.SelectSingleNode("/all"); 

     foreach (XmlNode item in oRootNode.ChildNodes) 
     { 
      var Kod = item?.Attributes["k"]?.InnerText; 
      var Ad = item?.InnerText; 
      Console.WriteLine(Kod + " " + Ad); 
     } 

KodとAdをRowに追加します。これにより、問題が解決されます。

+0

私の友人が働いてくれてありがとうございます:) –

+0

問題はありません☺️。あなたの問題が解決したら、この回答に投票できます。これが完了すると、この問題は解決されます。 ありがとう – Harish

0

あなたはFirstNode.ToString()の代わりElement("hp_Text").Value使用する必要があります。

String Kod, Ad; 
    foreach (XElement rehberimiz in rootElement.Elements()) 
    { 
     //yapmam gereken ad'a hp nin element içeriğini ekleme! 
     Kod = rehberimiz.Attribute("k").Value; 
     Ad = rehberimiz.FirstNode.ToString(); 
     dataGridView2.Rows.Add(Kod, Ad); 
    } 
関連する問題