代码之家  ›  专栏  ›  技术社区  ›  Jonathan Escobedo

在XML上添加新的可选节点

  •  0
  • Jonathan Escobedo  · 技术社区  · 15 年前

    我目前有这个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方案时,它在AppendChild上引发了一个异常:

    this document already has a 'DocumentElement' node.
    

    使用VB.NET Framework 2.0的即时消息

    谢谢你的帮助,

    3 回复  |  直到 15 年前
        1
  •  1
  •   Gregoire    15 年前

    在XML文档的根节点上创建导航器

    Dim root as XmlElement = oXMLDocument.DocumentElement
    Dim oNavigator As XPath.XPathNavigator = root.CreateNavigator()
    
        2
  •  0
  •   Dror Big McLargeHuge    15 年前

    这个问题与节点是可选的没有任何关系,通过添加一个节点,XML就变得无效(多个documentelement)。

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

        3
  •  0
  •   Rubens Farias    15 年前

    试试这个:

    If Not dtbParameters.Rows( 0 ).Item(5).equals("") Then
    
       oXMLDocument.SelectSingleNode("/PSC5").AppendChild( _
          oXMLDocument.CreateElement("OPT")).InnerText = "16"
    
    End If
    

    高温高压