0

次のような XML ファイルがあります。

<ROOT>
  <UNIT_VISIT>
    <ID>1</ID>
    <NAME>Dewi Anggraini</NAME>
    <SEX>F</SEX>
    <DOB>03/11/1986</DOB>
    <ADDRESS>Kuningan City, Jakarta</ADDRESS>
    <ID_UNIT>001</ID_UNIT>
    <VISIT_DATE>03/11/2013</VISIT_DATE>
  </UNIT_VISIT>
  <UNIT_VISIT>
    <ID>2</ID>
    <NAME>Dewi Anggraini</NAME>
    <SEX>F</SEX>
    <DOB>03/11/1986</DOB>
    <ADDRESS>Kuningan City, Jakarta</ADDRESS>
    <ID_UNIT>001</ID_UNIT>
    <VISIT_DATE>05/11/2013</VISIT_DATE>
  </UNIT_VISIT>
</ROOT>

いくつかの条件で C# を使用してその xml を読み取り、フィルター処理したいと思います

たとえば、Name = 'Dewi Anggraini' および ID_UNIT='001' および VISIT_DATE='05/11/2013' の場所を表示する必要があります。

4

2 に答える 2

2
var elements = myXml.Element("ROOT")
                    .Descendants("UNIT_VISIT")
                    .Where(x => x.Element("NAME").Value == "Dewi Anggraini")
                    .Where(x => x.Element("ID_UNIT").Value == "001");

これは仕事をします。

テストケース:

void Main()
{
    String myXML = "<ROOT><UNIT_VISIT><ID>1</ID><NAME>Jack Johnson</NAME><SEX>F</SEX><DOB>03/11/1986</DOB><ADDRESS>Kuningan City, Jakarta</ADDRESS><ID_UNIT>001</ID_UNIT><VISIT_DATE>03/11/2013</VISIT_DATE></UNIT_VISIT><UNIT_VISIT><ID>2</ID><NAME>Dewi Anggraini</NAME><SEX>F</SEX><DOB>03/11/1986</DOB><ADDRESS>Kuningan City, Jakarta</ADDRESS><ID_UNIT>001</ID_UNIT><VISIT_DATE>05/11/2013</VISIT_DATE></UNIT_VISIT></ROOT>";
    var doc = XDocument.Parse(myXML);

    var elements = doc.Element("ROOT").Descendants("UNIT_VISIT").Where(x => x.Element("NAME").Value == "Dewi Anggraini").Where(x => x.Element("ID_UNIT").Value == "001");

    Console.WriteLine (elements);
}

出力:

<UNIT_VISIT>
  <ID>2</ID>
  <NAME>Dewi Anggraini</NAME>
  <SEX>F</SEX>
  <DOB>03/11/1986</DOB>
  <ADDRESS>Kuningan City, Jakarta</ADDRESS>
  <ID_UNIT>001</ID_UNIT>
  <VISIT_DATE>05/11/2013</VISIT_DATE>
</UNIT_VISIT>
于 2013-11-03T16:32:48.863 に答える
0

これはあなたが探しているものでなければなりません。質問するときは、試したコードを投稿する必要がありますが、常に覚えておいてください。

    private void search ()
    {

        XmlDocument doc = new XmlDocument();
        doc.Load("xml path");
        XmlNode node = doc.SelectSingleNode("/Root");
        string name = "Dewi Anggraini";
        string id = "001";
        foreach (XmlNode nodes in node.SelectNodes("UNIT_VISIT"))
        {
            if (nodes != null && nodes["NAME"].InnerText == name && nodes["ID_UNIT"].InnerText == id)
            {
                // do stuff here
            }
        }
    }
于 2013-11-03T16:32:39.730 に答える