2012-08-03 2 views
2

xml 파일의 검색 데이터를 찾으려고합니다. 발견되면 MessageBox이 나타나고 발견 된 모든 데이터가 표시됩니다.xml 파일의 검색 데이터 C#

이것은 내 코드입니다.

DataView dv; 
     DataSet ds = new DataSet(); 
     ds.ReadXml("C:\\Users\\HDAdmin\\Documents\\SliceEngine\\SliceEngine\\bin\\Debug\\saya.xml"); 
     dv = new DataView(ds.Tables[0]); 
     dv.Sort = "Name"; 
     int index = dv.Find("Name"); 
     if (index == -1) 
     { 
      MessageBox.Show("Item Not Found"); 
     } 
     else 
     { 
      MessageBox.Show(dv[index]["Name"].ToString()); 
     } 

하지만 항상 항목을 찾을 수 없습니다.

그런 다음이 작업을 시도했습니다.

XmlDocument xml = new XmlDocument();    
      xml.Load("C:\\Users\\HDAdmin\\Documents\\SliceEngine\\SliceEngine\\bin\\Debug\\saya.xml"); 
      XmlNodeList xnList = xml.SelectNodes("/Patient/Patient/Name"); 
      foreach (XmlNode xn in xnList) 
      { 
       string name = xn["Name"].InnerText; 
       listBox21.Items.Add(name); 
} 

이 코드는 목록 상자에 넣으려고했습니다. 이렇게함으로써, 그것은 그것이 null 객체라고 말했다.

아래는 내 xml 파일입니다.

<Patient> 
     <Patient> 
     <Level>0</Level> 
     <Name>w</Name> 
     <Gender>0</Gender> 
     </Patient> 
    </Patient> 

아무도 도와 줄 수 없습니다.

답변

1

코드를 확인해야합니다. 그러나 여기에서 문제는 다음과 같습니다

xn["Name"].InnerText 

Becase의 XN은 /Patient/Patient/Name를 나타내며, 당신은 할 필요가 :

xn.InnerText 

그 가치를 얻을 수 있습니다.

+0

감사합니다 @ 디에고. 정말 도움이됩니다. 나는이 최고점을 투표 할 것이다. –

2

내가 개인적으로 LINQ를 사용하는 것을 선호 :

// Load up the document 
    XmlDocument formXml = new XmlDocument(); 
    formXml.LoadXml(@"<Patient> 
         <Patient> 
         <Level>0</Level> 
         <Name>w</Name> 
         <Gender>0</Gender> 
         </Patient> 
         </Patient>"); 


    // get the children nodes from the root 
    var children = formXml.ChildNodes; 
    // get the first or you can loop through if your xml has more children nodes 

    foreach (var child in children) 
    { 
     listBox21.Items.Add(child.Name); // or something similar 
    } 

은 보라

// using System.Xml.Linq; 

var doc = XDocument.Load(@"C:\path\to\file.xml"); 
foreach (var child in doc.Descendants("Name")) 
{ 
    MessageBox.Show(child.Value); 
} 
0

않는 한 xml 파일이 "이름"라는 사람,

'INT 지수 = dv.Find ("이름");'

같아야

'INT 인덱스 = dv.Find ("조"); // 또는 다른 이름 '

관련 문제