在XML上添加新的可选节点

时间:2009-10-15 18:19:30

标签: xml vb.net

我目前有这个XML架构:

<PSC5>
  <POI_ORI>
    <CIT>LIM</CIT>
  </POI_ORI>
</PSC5>

如果用户想要添加新选项,则最终架构将为:

<PSC5>
    <OPT>132<OPT>
  <POI_ORI>
    <CIT>LIM</CIT>
  </POI_ORI>
</PSC5>

如果不是这样的话:

<PSC5>
  <POI_ORI>
    <CIT>string</CIT>
  </POI_ORI>
</PSC5>

我正在使用以下代码段:

Dim oXMLDocument As New XmlDocument
            oXMLDocument.Load(strFileSchemaAWEB)

            Dim oNavigator As XPath.XPathNavigator = oXMLDocument.CreateNavigator() 

If not dtbParameters.Rows( 0 ).Item(5).equals("") Then
                oNavigator.AppendChild("<OPT>16</OPT>")
当我尝试生成第二个XML Schemma时,它会在AppendChild上抛出异常:

this document already has a 'DocumentElement' node.

我正在使用VB.NET Framework 2.0

感谢您的帮助,

3 个答案:

答案 0 :(得分:1)

在XmlDocument

的根节点上创建导航器
Dim root as XmlElement = oXMLDocument.DocumentElement
Dim oNavigator As XPath.XPathNavigator = root.CreateNavigator()

答案 1 :(得分:0)

该问题与可选节点无关,方法是以XML变为无效的方式添加节点(多个DocumentElement)。

尝试将您的节点添加到您想要的位置 您需要将导航器对象移动到要添加节点的位置 在此处阅读:AppendChildElement

答案 2 :(得分:0)

试试这个:

If Not dtbParameters.Rows( 0 ).Item(5).equals("") Then

   oXMLDocument.SelectSingleNode("/PSC5").AppendChild( _
      oXMLDocument.CreateElement("OPT")).InnerText = "16"

End If

HTH