从XML删除特定的节点 [英] Remove a particular node from XML
本文介绍了从XML删除特定的节点的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何删除"
<enrichment-required>mf_compliant</enrichment-required>
节点?
" node from the below XML in c#?
<?xml version="1.0" encoding="utf-8"?>
<request>
<user-info>
<app-id />
<license-key />
<site-id />
<request-timestamp>2012-08-24T16:22:48</request-timestamp>
</user-info>
<enrichment-request>
<dr-nbr>200700611609__8_13000</dr-nbr>
<mf-target-edition>MF_2012</mf-target-edition>
<enrich>
<enrichment-required>mf_compliant</enrichment-required>
<enrichment-required>mf-source-edition-group</enrichment-required>
<enrichment-required>division</enrichment-required>
<enrichment-required>section</enrichment-required>
<enrichment-required>part</enrichment-required>
<enrichment-required>products</enrichment-required>
<enrichment-required>manufacturers</enrichment-required>
<enrichment-required>brands</enrichment-required>
<enrichment-required>trades</enrichment-required>
</enrich>
<enrich-details entity="division">
<enrich-level key="boundary">yes</enrich-level>
<enrich-level>source_id</enrich-level>
<enrich-level>source_title</enrich-level>
<enrich-level>normalized_id</enrich-level>
<enrich-level>normalized_title</enrich-level>
</enrich-details>
</enrichment-request>
</request>
推荐答案
尝试一下
XmlDocument doc = new XmlDocument();
doc.Load(XmlfileName);
XmlNodeList xnList = doc.SelectNodes("request/enrichment-request/enrich/enrichment-required");
foreach (XmlNode xn in xnList)
{
if (xn.FirstChild.Value == "mf_compliant")
{
xn.RemoveChild(xn.FirstChild);
}
}
doc.Save(XmlfileName);
// Input File Path.
XDocument doc = XDocument.Load("input.xml");
var q = from node in doc.Descendants("enrichment-required")
where node != null && node.Value == "mf_compliant"
select node;
q.ToList().ForEach(x => x.Remove());
// Output File Path.
doc.Save("output.xml");
这里是一个快速而肮脏的解决方案,我对此进行了简短的测试,这是我想到的最快的解决方案.可能有一些更好的解决方案:
Here is a quick and dirty solution, i tested it briefly and that was the fastest I came up with. Probably there are some nicer solutions:
XmlDocument document = new XmlDocument();
document.Load("C:\\Temp\\New.xml");
XmlNode nodeReq = document.SelectSingleNode("request");
if (nodeReq != null)
{
XmlNode nodeEnReq = nodeReq.SelectSingleNode("enrichment-request");
if (nodeEnReq != null)
{
XmlNode nodeEnrich = nodeEnReq.SelectSingleNode("enrich");
if (nodeEnrich != null)
{
foreach (XmlNode node in nodeEnrich.ChildNodes)
{
if (node.InnerText == "mf_compliant")
nodeEnrich.RemoveChild(node);
}
}
}
}
document.Save("C:\\Temp\\New.xml");
这篇关于从XML删除特定的节点的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文