내가 입력 XML은선택 XML에서 노드와 새로운 XML
배열을 계속 내 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 루프에 이상한 오류가 발생합니다. 새 노드를 추가하면 아무런 문제가 없음을 알 수 있습니다.
감사
고마워요.이 제네릭을 만들려고 노력하고 있습니다. 그래서 더 많은 노드가있을 것입니다. 이름 주소/국가 등은 제거되어야합니다 .. 문자열 유지는 실제로 winform에서 오는 textBox.Text입니다. 내가 무엇을 유지해야하는지 정의 할 것이다. – user2920743
@ user2920743, 업데이트 된 답변을 확인하십시오. 슬래시 구분 기호없이 유지할 노드를 넣으십시오. –