删除XML整个节点

liym15 2009-06-19 01:58:23
<?xml version="1.0" standalone="yes" ?>
<xml>
<DataSet1>
<batchFileQueue>
<DocNo>1001</DocNo>
<filename>ocr.pdf</filename>
</batchFileQueue>
<batchFileQueue>
<DocNo>1002</DocNo>
<filename>ocr.pdf</filename>
</batchFileQueue>
</DataSet1>
</xml>
我想删除DocNo=1001,删除后的结果是
<?xml version="1.0" standalone="yes" ?>
<xml>
<DataSet1>
<batchFileQueue>
<DocNo>1002</DocNo>
<filename>ocr.pdf</filename>
</batchFileQueue>
</DataSet1>
</xml>
意思就是把整个节点删除掉
...全文
31 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
liym15 2009-06-19
  • 打赏
  • 举报
回复
谢谢 ljhcy99
根据ljhcy99 写法我重新写了代码.
下面代码可以运行:
Dim currNode As XmlNode
Dim xmldom As New XmlDocument
Dim xmlnode As XmlElement
If Not (xmldom Is Nothing) Then xmldom = Nothing


xmldom = New XmlDocument
xmldom.Load("c:\2.xml")
Dim xnl As XmlNodeList = xmldom.SelectSingleNode("xml/DataSet1").ChildNodes
Dim xn As XmlNode
Dim i As Integer
For Each xn In xnl
Dim xe As XmlElement = CType(xn, XmlElement)
If xn.ChildNodes(i).Name = "DocNo" And xn.ChildNodes(i).InnerText = "1001" Then
xe.ParentNode.RemoveChild(xn)
End If
Next

xmldom.Save("c:\2.xml")
ljhcy99 2009-06-19
  • 打赏
  • 举报
回复
XmlDocument doc = new XmlDocument();
doc.Load(@"D:\TestData\1.xml");
XmlNodeList nodelist = doc.DocumentElement.GetElementsByTagName("batchFileQueue");
List<XmlNode> elist = new List<XmlNode>();
foreach (XmlNode node in nodelist)
{
for (int i = 0; i < node.ChildNodes.Count; i++)
{
if (node.ChildNodes[i].Name.ToString() == "DocNo" && node.ChildNodes[i].InnerText.ToString().Trim() == "1001")
{
elist.Add(node);
}
}
}
foreach (XmlNode node in elist)
{
doc.DocumentElement.ChildNodes[0].RemoveChild(node);
}
doc.Save(@"D:\TestData\1.xml");
liym15 2009-06-19
  • 打赏
  • 举报
回复
to :ljhcy99
运行报错:要移除的节点不是此节点的子级.
ljhcy99 2009-06-19
  • 打赏
  • 举报
回复
XmlDocument doc = new XmlDocument();
doc.Load(@"C:\1.xml");
XmlNodeList nodelist = doc.DocumentElement.GetElementByTagName("batchFileQueue");
foreach(XmlNode node in nodelist)
{
for(int i=0;i<node.ChildNodes.Count;i++)
if(node.ChildNodes[i].Name="DocNo" && node.ChildNodes[i].InnerText="1001")
{
doc.DocumentElement.RemoveChild(node);
}
}

16,555

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧