如果child为空,我想从XML结构中删除父元素。 我的XML:
<Customers>
<customer>
<Name>John</Name>
<Age>25</Age>
<Status>single</Status>
</Customer>
<customer>
<Name>Jack</Name>
<Age></Age>
<Status></Status>
</Customer>
</Customers>
应该成为:
<Customers>
<customer>
<Name>John</Name>
<Age>25</Age>
<Status>single</Status>
</Customer>
</Customers>
我的代码:
XmlElement element3 = xmlDocument.CreateElement("Age");
element3.InnerText = str3;
element1.AppendChild((XmlNode)element3);
XmlElement element4 = xmlDocument.CreateElement("Status");
element4.InnerText = str4;
element1.AppendChild((XmlNode)element4);
如果年龄和状态子项为空,如何删除父“客户”?
答案 0 :(得分:1)
您可以使用XPath语法和 SelectNodes()
方法轻松地从XmlDocument
获取特定节点。
选择具有子节点<Customer>
和<Age>
的{{1}}元素为空的示例,然后删除所选元素:
<Status>
更新:
您似乎是构建XML的人。因此,我建议检查var nodes = xmlDocument.DocumentElement.SelectNodes("//Customer[Age = '' and Status = '']");
foreach (XmlElement node in nodes)
{
node.ParentNode.RemoveChild(node);
}
和str3
是否为空,如果它们是删除相应的str4
元素:
<Customer>
答案 1 :(得分:0)
我知道您在创建新文件并在验证后添加每个元素。我认为这对你有用:
XDocument input = XDocument.Load("customers.xml");
XDocument output = new XDocument();
output.Add(new XElement("Customers"));
IEnumerable<XElement> elements = input.Element("Customers").Elements("customer");
foreach (XElement el in elements)
{
string age = el.Element("Age").Value;
string status = el.Element("Status").Value;
if (age != "" || status != "")
{
output.Element("Customers").Add(el);
}
}
output.Save("customers.xml");