2

私はxmlファイルでデータを検索しようとしています。見つかった場合は、ポップアップMessageBoxして、見つかったすべてのデータを表示します。

これは私のコードです。

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);
}

このコードについては、リストボックスに入れようとしました。こうすることで、ヌルオブジェクトであると言っていました。

以下は私のxmlファイルです。

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

誰でもこれで私を助けることができます。

4

4 に答える 4

2

私は個人的に次のように LINQ to XML を使用することを好みます。

// using System.Xml.Linq;

var doc = XDocument.Load(@"C:\path\to\file.xml");
foreach (var child in doc.Descendants("Name"))
{
    MessageBox.Show(child.Value);
}
于 2012-08-03T00:32:31.840 に答える
1

XMLDocumentから子ノードを取得しようとしましたか?

たとえば、次のようになります。

    // 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
  }

見て:

于 2012-08-03T00:30:01.233 に答える
1

あなたのコードは大丈夫だと考えなければなりません!しかし、ここに問題があります:

xn["Name"].InnerText

xn が表し/Patient/Patient/Nameているため、次のことを行う必要があります。

xn.InnerText

その値を取得します。

于 2012-08-03T00:58:37.700 に答える