XmlDocument.ImportNode(XmlNode, Boolean) Metod

Definition

Importerar en nod från ett annat dokument till det aktuella dokumentet.

public:
 virtual System::Xml::XmlNode ^ ImportNode(System::Xml::XmlNode ^ node, bool deep);
public virtual System.Xml.XmlNode ImportNode(System.Xml.XmlNode node, bool deep);
abstract member ImportNode : System.Xml.XmlNode * bool -> System.Xml.XmlNode
override this.ImportNode : System.Xml.XmlNode * bool -> System.Xml.XmlNode
Public Overridable Function ImportNode (node As XmlNode, deep As Boolean) As XmlNode

Parametrar

node
XmlNode

Noden som importeras.

deep
Boolean

trueför att utföra en djup klon; annars . false

Returer

Den importerade XmlNode.

Undantag

Nodtypen kan inte importeras.

Exempel

I följande exempel importeras en boknod från ett andra XML-dokument till det ursprungliga XML-dokumentet.

using System;
using System.IO;
using System.Xml;

public class Sample
{
  public static void Main()
  {
    //Create the XmlDocument.
    XmlDocument doc = new XmlDocument();
    doc.LoadXml("<bookstore>" +
                "<book genre='novel' ISBN='1-861001-57-5'>" +
                "<title>Pride And Prejudice</title>" +
                "</book>" +
                "</bookstore>");

    //Create another XmlDocument which holds a list of books.
    XmlDocument doc2 = new XmlDocument();
    doc2.Load("books.xml");

    //Import the last book node from doc2 into the original document.
    XmlNode newBook = doc.ImportNode(doc2.DocumentElement.LastChild, true);
    doc.DocumentElement.AppendChild(newBook);

    Console.WriteLine("Display the modified XML...");
    doc.Save(Console.Out);
  }
}
Option Explicit
Option Strict

Imports System.IO
Imports System.Xml

Public Class Sample
    
    Public Shared Sub Main()
        'Create the XmlDocument.
        Dim doc As New XmlDocument()
        doc.LoadXml("<bookstore>" & _
                    "<book genre='novel' ISBN='1-861001-57-5'>" & _
                    "<title>Pride And Prejudice</title>" & _
                    "</book>" & _
                    "</bookstore>")
        
        'Create another XmlDocument which holds a list of books.
        Dim doc2 As New XmlDocument()
        doc2.Load("books.xml")
        
        'Import the last book node from doc2 into the original document.
        Dim newBook As XmlNode = doc.ImportNode(doc2.DocumentElement.LastChild, True)
        doc.DocumentElement.AppendChild(newBook)
        
        Console.WriteLine("Display the modified XML...")
        doc.Save(Console.Out)
    End Sub
End Class

I exemplet används filen , books.xmlsom indata.

<?xml version='1.0'?>
<!-- This file represents a fragment of a book store inventory database -->
<bookstore>
  <book genre="autobiography" publicationdate="1981" ISBN="1-861003-11-0">
    <title>The Autobiography of Benjamin Franklin</title>
    <author>
      <first-name>Benjamin</first-name>
      <last-name>Franklin</last-name>
    </author>
    <price>8.99</price>
  </book>
  <book genre="novel" publicationdate="1967" ISBN="0-201-63361-2">
    <title>The Confidence Man</title>
    <author>
      <first-name>Herman</first-name>
      <last-name>Melville</last-name>
    </author>
    <price>11.99</price>
  </book>
  <book genre="philosophy" publicationdate="1991" ISBN="1-861001-57-6">
    <title>The Gorgias</title>
    <author>
      <name>Plato</name>
    </author>
    <price>9.99</price>
  </book>
</bookstore>

Kommentarer

Den returnerade noden har ingen överordnad nod. Källnoden ändras eller tas inte bort från det ursprungliga dokumentet. ImportNode skapar en kopia av källnoden.

När du importerar en nod skapas ett XmlNode objekt som ägs av det importerande dokumentet, med och Name identiskt med NodeType källnoden. Det nya objektet har även attribut som är relaterade till namnområden (Prefix, LocalNameoch NamespaceURI).

Beroende på nodtypen för den importerade noden och värdet för parametern deep kopieras ytterligare information efter behov. Den här metoden försöker spegla det förväntade beteendet om ett fragment av XML- eller HTML-källan kopierades från ett dokument till ett annat (med tanke på att de två dokumenten i XML-fallet kan ha olika DTD:er).

I följande tabell beskrivs det specifika beteendet för varje XmlNodeType.

XmlNodeType ImportNode(true) ImportNode(false)
Attribute Egenskapen Specified är inställd true på på den genererade XmlAttribute. Källans XmlAttribute underordnade värden importeras rekursivt och de resulterande noderna samlas på nytt för att bilda motsvarande underträd. Parametern gäller inte för deep noder. De XmlAttribute bär alltid med sig sina underordnade när de importeras.
CData Kopierar noden, inklusive dess data. Kopierar noden, inklusive dess data.
Comment Kopierar noden, inklusive dess data. Kopierar noden, inklusive dess data.
DocumentFragment Källnodens underordnade noder importeras rekursivt och de resulterande noderna samlas på nytt för att bilda motsvarande underträd. En tom XmlDocumentFragment genereras.
Dokumenttyp Kopierar noden, inklusive dess data.* Kopierar noden, inklusive dess data.*
Element Underordnade till källelementet och dess angivna attributnoder importeras rekursivt och de resulterande noderna samlas på nytt för att bilda motsvarande underträd.

Obs! Standardattribut kopieras inte. Om dokumentet som importeras till definierar standardattribut för det här elementnamnet tilldelas de.
Angivna attributnoder för källelementet importeras och de genererade noderna XmlAttribute kopplas till den genererade XmlElement.

Obs! Standardattribut kopieras inte. Om dokumentet som importeras till definierar standardattribut för det här elementnamnet tilldelas de.
EntityReference Eftersom käll- och måldokumenten kan ha entiteterna definierade på olika sätt kopierar XmlEntityReference den här metoden endast noden. Ersättningstexten ingår inte. Om måldokumentet har definierat entiteten tilldelas dess värde. Eftersom käll- och måldokumenten kan ha entiteterna definierade på olika sätt kopierar XmlEntityReference den här metoden endast noden. Ersättningstexten ingår inte. Om måldokumentet har definierat entiteten tilldelas dess värde.
bearbetningsinstruktion Kopierar mål- och datavärdet från den importerade noden. Kopierar mål- och datavärdet från den importerade noden.
Text Kopierar noden, inklusive dess data. Kopierar noden, inklusive dess data.
SignificantWhitespace Kopierar noden, inklusive dess data. Kopierar noden, inklusive dess data.
Whitespace Kopierar noden, inklusive dess data. Kopierar noden, inklusive dess data.
XML-deklaration Kopierar mål- och datavärdet från den importerade noden. Kopierar mål- och datavärdet från den importerade noden.
Alla andra nodtyper. Det går inte att importera dessa nodtyper. Det går inte att importera dessa nodtyper.

*Även om DocumentType-noder kan importeras kan ett dokument bara ha en DocumentType. Om dokumentet för närvarande har en DocumentType-nod måste det tas bort innan du lägger till en ny.

Gäller för