如何使用vb.net或C#为xmlDocument中的节点集提供/添加父节点

时间:2012-08-21 04:49:40

标签: c# vb.net xmldocument

如何使用vb.net为xmlDocument中的节点集添加或提供父节点。

我有以下xml节点

<books>
   <title>title</title>
   <isbn>123456</isbn>
   <surname>surname</surname>
   <givenname>givenname</givenname>
</books>

现在我想为<author><surname>添加父节点<givenname>,如下所示。

 <books>
   <title>title</title>
   <isbn>123456</isbn>
   <author>
      <surname>surname</surname>
      <givenname>givenname</givenname>
   </author>
 </books>

任何人都可以告诉我如何在vb.net中的xmlDocument中执行此操作。

2 个答案:

答案 0 :(得分:1)

您可以通过调用XPathSelectElements来标识节点,然后将其从树中删除并将其添加到新的author节点。


示例:

Dim xml = <books>
            <title>title</title>
            <isbn>123456</isbn>
            <surname>surname</surname>
            <givenname>givenname</givenname>
          </books>

Dim author = <author />
xml.Add(author)
For Each node in xml.XPathSelectElements("./givenname|./surname")
    node.Remove()
    author.Add(node)
Next

答案 1 :(得分:1)

你需要:

  1. 获取要修改的父节点(书籍)。
  2. 添加新的子元素(作者)。
  3. 获取您要移动的子元素(姓氏和名字)。
  4. 对于要移动的每个节点,将其从其父节点(书籍)中删除,然后将其作为子节点添加到新的父节点(作者)。
  5. 例如:

    Dim doc As New XmlDocument()
    doc.Load(xmlFilePath)
    Dim bookToModify As XmlNode = doc.SelectSingleNode("/books")
    Dim author As XmlNode = doc.CreateElement("author")
    bookToModify.AppendChild(author)
    For Each node As XmlNode In bookToModify.SelectNodes("surname | givenname")
        node.ParentNode.RemoveChild(node)
        author.AppendChild(node)
    Next