C#

2017-11-29 7 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 파일. 은 내가 마력 요소의 값과 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); 
    }