我有以下XML结构:
<Catalog>
<sensors>
<Item>
<Item_Number>Mblah123</Item_Number>
<Category>Vibration</Category>
<Language>English</Language>
<Description>desc</Description>
<Long_Description><![CDATA[wow!]]></Long_Description>
<BOM><![CDATA[]]></BOM>
<Recommended_Parts></Recommended_Parts>
<Picture>pic.jpg</Picture>
</Item>
</sensors>
<technology>
<Item>
<Item_Number>test003</Item_Number>
<Category>Vibration</Category>
<Language>Japanese</Language>
<Description>description</Description>
<Long_Description><![CDATA[rsxgrdxgtxtxg]]></Long_Description>
<BOM>
<![CDATA[xwthgwtg
trxthtrh
trxeyrxjyetj
txrhueyjh]]>
</BOM>
<Recommended_Parts>xtrwth</Recommended_Parts>
<Picture>pic.jpg</Picture>
</Item>
</technology>
</Catalog>
在我的.NET页面中,我有一些用于删除特定项目的代码:
Private Sub DeleteData(ByVal fileName As String, ByVal strSelection As String)
lblData.Text = ""
Dim strContent As String = ""
Dim m_xmld As XmlDocument
'Dim m_nodelist As XmlNodeList
Dim m_node As XmlNode
'Create the XML Document
m_xmld = New XmlDocument()
'Load the Xml file
m_xmld.Load(fileName)
m_node = m_xmld.SelectSingleNode(strSelection)
m_node.RemoveAll()
m_xmld.Save(fileName)
MsgBox("Entry removed!")
End Sub
但是当我使用它时,比如技术项目,它会保留节点:
<Catalog>
<sensors>
<Item>
<Item_Number>Mblah123</Item_Number>
<Category>Vibration</Category>
<Language>English</Language>
<Description>desc</Description>
<Long_Description><![CDATA[wow!]]></Long_Description>
<BOM><![CDATA[]]></BOM>
<Recommended_Parts></Recommended_Parts>
<Picture>pic.jpg</Picture>
</Item>
</sensors>
<technology>
<Item>
</Item>
</technology>
</Catalog>
如何指定甚至需要删除Item标签?
TIA!
附录
我通过以下方式调用sub:
DeleteData(MapPath(“Catalog1.xml”),“/ Catalog /”+ ddlL1Cat.SelectedValue.ToString +“/ Item [Item_Number ='”+ ddlItemNum.SelectedValue +“']”)
strSelection会有这样的价值:“/ Catalog / technology / Item [Item_Number ='test003']”