XmlDataDocument.Load 方法

定义

使用指定的数据源加载 XmlDataDocument,然后用加载的数据同步 DataSet

重载

Load(Stream)

从指定的流加载 XmlDataDocument

Load(TextReader)

从指定的 TextReader 加载 XmlDataDocument

Load(String)

使用指定的 URL 加载 XmlDataDocument

Load(XmlReader)

从指定的 XmlReader 加载 XmlDataDocument

注解

备注

若要以关系方式查看 XML 数据,必须先指定用于数据映射的架构。 可以通过调用 ReadXmlSchema 方法或手动创建 DataSet 表和列来完成此操作。 必须在调用 Load之前完成此步骤。

XmlDataDocument 不支持创建实体引用。 如果数据包含实体引用,该方法 Load 将解析并扩展任何实体引用。 但是,如果使用 Load 采用参数 XmlReader 的重载,则必须指定 XmlReader 可以解析实体的重载。

Load(Stream)

从指定的流加载 XmlDataDocument

public:
 override void Load(System::IO::Stream ^ inStream);
public override void Load (System.IO.Stream inStream);
override this.Load : System.IO.Stream -> unit
Public Overrides Sub Load (inStream As Stream)

参数

inStream
Stream

包含要加载的 XML 文档的流。

注解

XmlDataDocument 不支持创建实体引用。 如果数据包含实体引用,该方法 Load 将解析并扩展任何实体引用。

备注

若要以关系方式查看 XML 数据,必须先指定用于数据映射的架构。 可以通过调用 ReadXmlSchema 方法或手动创建 DataSet 表和列来完成此操作。 必须在调用 Load之前完成此步骤。

适用于

Load(TextReader)

从指定的 TextReader 加载 XmlDataDocument

public:
 override void Load(System::IO::TextReader ^ txtReader);
public override void Load (System.IO.TextReader txtReader);
override this.Load : System.IO.TextReader -> unit
Public Overrides Sub Load (txtReader As TextReader)

参数

txtReader
TextReader

用于将 XML 数据输送到文档中的 TextReader

注解

XmlDataDocument 不支持创建实体引用。 如果数据包含实体引用,该方法 Load 将解析并展开任何实体引用。

备注

若要以关系方式查看 XML 数据,必须先指定用于数据映射的架构。 可以通过调用 ReadXmlSchema 该方法或通过手动创建表和列 DataSet 来完成此操作。 必须在调用 Load之前完成此步骤。

适用于

Load(String)

使用指定的 URL 加载 XmlDataDocument

public:
 override void Load(System::String ^ filename);
public override void Load (string filename);
override this.Load : string -> unit
Public Overrides Sub Load (filename As String)

参数

filename
String

文件的 URL,该文件包含要加载的 XML 文档。

注解

XmlDataDocument 不支持创建实体引用。 如果数据包含实体引用,该方法 Load 将解析并展开任何实体引用。

备注

若要以关系方式查看 XML 数据,必须先指定用于数据映射的架构。 可以通过调用 ReadXmlSchema 该方法或通过手动创建表和列 DataSet 来完成此操作。 必须在调用 Load之前完成此步骤。

适用于

Load(XmlReader)

从指定的 XmlReader 加载 XmlDataDocument

public:
 override void Load(System::Xml::XmlReader ^ reader);
public override void Load (System.Xml.XmlReader reader);
override this.Load : System.Xml.XmlReader -> unit
Public Overrides Sub Load (reader As XmlReader)

参数

reader
XmlReader

包含要加载的 XML 文档的 XmlReader

例外

正在加载的 XML 包含实体引用,而该读取器不能解析实体。

示例

以下示例使用 DataSet 方法修改书籍的价格。

#using <System.dll>
#using <System.Data.dll>
#using <System.Xml.dll>

using namespace System;
using namespace System::Data;
using namespace System::Xml;
int main()
{
   // Create an XmlDataDocument.
   XmlDataDocument^ doc = gcnew XmlDataDocument;

   // Load the schema file.
   doc->DataSet->ReadXmlSchema( "store.xsd" );

   // Load the XML data.
   XmlTextReader^ reader = gcnew XmlTextReader( "2books.xml" );
   reader->MoveToContent(); // Moves the reader to the root node.
   doc->Load( reader );

   // Update the price on the first book using the DataSet methods.
   DataTable^ books = doc->DataSet->Tables["book"];
   books->Rows[0]["price"] = "12.95";
   Console::WriteLine( "Display the modified XML data..." );
   doc->Save( Console::Out );
}
using System;
using System.Data;
using System.Xml;
public class Sample {
    public static void Main() {
        // Create an XmlDataDocument.
        XmlDataDocument doc = new XmlDataDocument();

        // Load the schema file.
        doc.DataSet.ReadXmlSchema("store.xsd");

        // Load the XML data.
        XmlTextReader reader = new XmlTextReader("2books.xml");
        reader.MoveToContent(); // Moves the reader to the root node.
        doc.Load(reader);

        // Update the price on the first book using the DataSet methods.
        DataTable books = doc.DataSet.Tables["book"];
        books.Rows[0]["price"] = "12.95";

        Console.WriteLine("Display the modified XML data...");
        doc.Save(Console.Out);
    }
} // End class
Imports System.Data
Imports System.Xml

public class Sample

  public shared sub Main()

      'Create an XmlDataDocument.
      Dim doc as XmlDataDocument = new XmlDataDocument()

      'Load the schema.
      doc.DataSet.ReadXmlSchema("store.xsd") 
 
      'Load the XML data.
      Dim reader as XmlTextReader = new XmlTextReader("2books.xml")
      reader.MoveToContent() 'Moves the reader to the root node.
      doc.Load(reader)
        
     'Change the price on the first book imports the DataSet methods.
     Dim books as DataTable = doc.DataSet.Tables.Item("book")
     books.Rows.Item(0).Item("price") = "12.95"
        
     Console.WriteLine("Display the modified XML data...")
     doc.Save(Console.Out)

  end sub
end class

此示例使用以下两个输入文件。

2books.xml

<!--sample XML fragment-->
<bookstore>
  <book genre='novel' ISBN='10-861003-324'>
    <title>The Handmaid's Tale</title>
    <price>19.95</price>
  </book>
  <book genre='novel' ISBN='1-861001-57-5'>
    <title>Pride And Prejudice</title>
    <price>24.95</price>
  </book>
</bookstore>

store.xsd

<xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema">

 <xsd:element name="bookstore" type="bookstoreType"/>

 <xsd:complexType name="bookstoreType">
  <xsd:sequence maxOccurs="unbounded">
   <xsd:element name="book"  type="bookType"/>
  </xsd:sequence>
 </xsd:complexType>

 <xsd:complexType name="bookType">
  <xsd:sequence>
   <xsd:element name="title" type="xsd:string"/>
   <xsd:element name="author" type="authorName"/>
   <xsd:element name="price"  type="xsd:decimal"/>
  </xsd:sequence>
  <xsd:attribute name="genre" type="xsd:string"/>
 </xsd:complexType>

 <xsd:complexType name="authorName">
  <xsd:sequence>
   <xsd:element name="first-name"  type="xsd:string"/>
   <xsd:element name="last-name" type="xsd:string"/>
  </xsd:sequence>
 </xsd:complexType>

</xsd:schema>

注解

XmlDataDocument 不支持创建实体引用。 如果数据源包含实体引用,则必须创建一个XmlValidatingReaderEntityHandling属性设置为 EntityHandling.ExpandEntities (这是默认行为) 并传递给XmlValidatingReader``Load该方法。 如果不使用, XmlValidatingReader该方法 Load 将引发异常。

该方法 Load 始终保留大量空白。 该 PreserveWhitespace 属性确定是否保留空格。 默认值为 false,不会保留空格。

如果读取器处于初始状态 (,则 ReadState=ReadState.Initial) 会 Load 使用读取器的全部内容,并从找到的内容生成 DOM。

如果读取器已定位在深度“n”的某个节点上,则此方法会将该节点和所有后续同级加载到关闭深度“n”的结束标记。 这具有以下结果。

如果当前节点及其以下同级看起来类似于以下内容:

<!--comment--><element1>one</element1><element2>two</element2>  

Load 引发异常,因为文档不能有两个根级元素。 如果当前节点及其以下同级看起来类似于以下内容:

<!--comment--><?process  
    instruction?><!--comment--></endtag>  

Load 将成功;但是,你将有一个不完整的 DOM 树,因为没有根级元素。 在保存文档之前,必须添加根级元素;否则,该方法 Save 将引发异常。

如果读取器定位于对于文档的根级别来说无效的叶节点(如空白或属性节点),则读取器继续读取,直到定位在可用于根的节点上。 文档在此时开始加载。

适用于