0

XML を取り除き、String Keep 配列にあるノードのみを保持しようとしています。

入力 XML は

 <Employees>
  <Employee>
    <EmpId>1</EmpId>
    <Name>Sam</Name>
    <Sex>Male</Sex>
    <Address>
      <Country>USA</Country>
      <Zip>95220</Zip>
    </Address>
  </Employee>
  <Employee>
    <EmpId>2</EmpId>
    <Name>Lucy</Name>
    <Sex>Female</Sex>
    <Address>
      <Country>USA</Country>
      <Zip>95220</Zip>
    </Address>
  </Employee>
</Employees>

私が必要とする出力は

<Employees>
  <Employee>
    <EmpId>1</EmpId>
    <Sex>Male</Sex>
    <Address>
     <Zip>95220</Zip>
    </Address>
  </Employee>
  <Employee>
    <EmpId>2</EmpId>
    <Sex>Female</Sex>
    <Address>
      <Zip>95220</Zip>
    </Address>
  </Employee>
</Employees>

私のコードは以下の通りです。

private void button1_Click(object sender, EventArgs e)
            {
                XmlDocument xDoc = new XmlDocument();

            xDoc.Load(XML_Path);
           // xDoc.Load();
            XmlNodeList xNodes = xDoc.SelectNodes("Employees/Employee");
            XmlDocument doc = new XmlDocument();
            XmlNode docNode = doc.CreateXmlDeclaration("1.0", "UTF-8", null);
            doc.AppendChild(docNode);

            XmlNode employeesNode = doc.CreateElement("Employees");
            doc.AppendChild(employeesNode);
            string s =null;
            string keep = "EmpId,Sex,Address/Zip";
            string[] strArr = keep.Split(',');
            foreach(XmlNode xN in xNodes)
            {
                XmlNode employeeNode = doc.CreateElement("Employee");
                employeesNode.AppendChild(employeeNode);

                foreach (string str in strArr)
                {
                    XmlNode xNod = xN.SelectSingleNode(str);
                    employeeNode.AppendChild(xNod);

                }

            }
            richTextBox1.Text = doc.ToString();

        }

内部 foreach ループで奇妙なエラーが発生し、新しいノードが追加されません。誰かが私が何をしているのか教えてもらえますか。

ありがとう

4

3 に答える 3