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



如何使用vb.net为xmlDocument中的一组节点添加或赋予父节点。

我有以下xml节点

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

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

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

有人能告诉我如何在vb.net中的xmlDocument中完成它吗?

您需要:

  1. 获取要修改的父节点(图书)
  2. 添加新的子元素(author)
  3. 获取要移动的子元素(姓氏和给定名称)
  4. 对于要移动的每个节点,请将其从其父节点(图书)中删除,然后将其作为子节点添加到新的父节点(作者)中

例如:

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

您可以通过调用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

最新更新