从XML文件中删除项目

时间:2014-02-13 00:46:42

标签: asp.net xml vb.net removeall

我有以下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']”

0 个答案:

没有答案