XmlDocument.ImportNode(XmlNode, Boolean) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
将节点从另一个文档导入到当前文档。
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
参数
- node
- XmlNode
正在被导入的节点。
- deep
- Boolean
如果执行深层克隆,则为 true
;否则为 false
。
返回
导入的 XmlNode。
例外
在无法导入的节点类型上调用此方法。
示例
以下示例将第二个 XML 文档中的书籍节点导入原始 XML 文档。
#using <System.Xml.dll>
using namespace System;
using namespace System::IO;
using namespace System::Xml;
int main()
{
//Create the XmlDocument.
XmlDocument^ doc = gcnew 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 = gcnew 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 );
}
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
此示例使用该文件 books.xml
作为输入。
<?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>
注解
返回的节点没有父节点。 源节点不会从原始文档更改或删除; ImportNode
创建源节点的副本。
导入节点将XmlNode
创建导入文档拥有的对象,该NameNodeType对象与源节点相同。 新对象还具有与命名空间 (PrefixLocalName和NamespaceURI) 相关的属性。
根据导入节点的节点类型和参数的值 deep
,会根据需要复制其他信息。 如果 XML 或 HTML 源片段从一个文档复制到另一个文档 (识别这两个文档可能具有不同的 DTD) ,此方法将尝试镜像预期的行为。
下表描述了每个 XmlNodeType特定行为。
XmlNodeType | ImportNode (true) | ImportNode (false) |
---|---|---|
Attribute | 属性 Specified 设置为 true 在生成的 XmlAttribute。 源 XmlAttribute 的后代以递归方式导入,生成的节点重新组合以形成相应的子树。 |
该 deep 参数不适用于 XmlAttribute 节点;导入时,它们始终携带其子级。 |
CData | 复制该节点,包括复制其数据。 | 复制该节点,包括复制其数据。 |
评论 | 复制该节点,包括复制其数据。 | 复制该节点,包括复制其数据。 |
DocumentFragment | 递归导入源节点的子代,并重组生成的节点,以构成相应的子树。 | 生成空 XmlDocumentFragment 。 |
DocumentType | 复制该节点,包括复制其数据。* | 复制该节点,包括复制其数据。* |
元素 | 源元素及其指定的属性节点的后代以递归方式导入,生成的节点重新组合以形成相应的子树。 注意:不复制默认属性。 如果导入到的文档定义该元素名称的默认属性,则分配这些默认属性。 |
导入源元素的指定属性节点,生成的 XmlAttribute 节点将附加到生成的 XmlElement节点。注意:不复制默认属性。 如果导入到的文档定义该元素名称的默认属性,则分配这些默认属性。 |
EntityReference | 由于源文档和目标文档的实体定义方式可能不同,因此此方法仅复制 XmlEntityReference 节点。 不包括替换文本。 如果目标文档定义了实体,则给它赋值。 | 由于源文档和目标文档的实体定义方式可能不同,因此此方法仅复制 XmlEntityReference 节点。 不包括替换文本。 如果目标文档定义了实体,则给它赋值。 |
ProcessingInstruction | 从导入的节点复制目标和数据值。 | 从导入的节点复制目标和数据值。 |
文本 | 复制该节点,包括复制其数据。 | 复制该节点,包括复制其数据。 |
SignificantWhitespace | 复制该节点,包括复制其数据。 | 复制该节点,包括复制其数据。 |
空格 | 复制该节点,包括复制其数据。 | 复制该节点,包括复制其数据。 |
XmlDeclaration | 从导入的节点复制目标和数据值。 | 从导入的节点复制目标和数据值。 |
所有其他节点类型。 | 不能导入这些节点类型。 | 不能导入这些节点类型。 |
*虽然可以导入 DocumentType 节点,但文档只能有一个 DocumentType。 如果文档当前具有 DocumentType 节点,则必须在添加新节点之前将其删除。