Joh*_*ton 7 .net c# xml xpath xmldocument
我目前有以下代码:
XPathNodeIterator theNodes = theNav.Select(theXPath.ToString());
while (theNodes.MoveNext())
{
//some attempts i though were close
//theNodes.RemoveChild(theNodes.Current.OuterXml);
//theNodes.Current.DeleteSelf();
}
Run Code Online (Sandbox Code Playgroud)
我已将xpath设置为我想要在xml中返回的内容,并且我想删除循环的所有内容.我尝试了几种删除信息的方法,但它不喜欢我的语法.我在Microsoft支持上找到了一个示例:http://support.microsoft.com/kb/317666但我想使用它而不是每个.
任何意见或问题都表示赞赏.
为什么不使用XDocument?
var xmlText = "<Elements><Element1 /><Element2 /></Elements>";
var document = XDocument.Parse(xmlText);
var element = document.XPathSelectElement("Elements/Element1");
element.Remove();
var result = document.ToString();
Run Code Online (Sandbox Code Playgroud)
result将会<Elements><Element2 /></Elements>。
要么:
var document = XDocument.Load(fileName);
var element = document.XPathSelectElement("Elements/Element1");
element.Remove();
document.Savel(fileName);
Run Code Online (Sandbox Code Playgroud)
[编辑]对于.NET 2,可以使用XmlDocument:
XmlDocument document = new XmlDocument();
document.Load(fileName);
XmlNode node = document.SelectSingleNode("Elements/Element1");
node.ParentNode.RemoveChild(node);
document.Save(fileName);
Run Code Online (Sandbox Code Playgroud)
[编辑]
如果需要删除所有子元素和属性:
XmlNode node = document.SelectSingleNode("Elements");
node.RemoveAll();
Run Code Online (Sandbox Code Playgroud)
如果需要保留属性,但要删除元素:
XmlNode node = document.SelectSingleNode("Elements");
foreach (XmlNode childNode in node.ChildNodes)
node.RemoveChild(childNode);
Run Code Online (Sandbox Code Playgroud)
string nodeXPath = "your x path";
XmlDocument document = new XmlDocument();
document.Load(/*your file path*/);
XmlNode node = document.SelectSingleNode(nodeXPath);
node.RemoveAll();
XmlNode parentnode = node.ParentNode;
parentnode.RemoveChild(node);
document.Save("File Path");
Run Code Online (Sandbox Code Playgroud)