XmlDataDocument.Load 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
使用指定的数据源加载 XmlDataDocument
,然后用加载的数据同步 DataSet。
重载
Load(Stream) |
从指定的流加载 |
Load(TextReader) |
从指定的 TextReader 加载 |
Load(String) |
使用指定的 URL 加载 |
Load(XmlReader) |
从指定的 XmlReader 加载 |
注解
备注
若要以关系方式查看 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
不支持创建实体引用。 如果数据源包含实体引用,则必须创建一个XmlValidatingReader将EntityHandling属性设置为 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 将引发异常。
如果读取器定位于对于文档的根级别来说无效的叶节点(如空白或属性节点),则读取器继续读取,直到定位在可用于根的节点上。 文档在此时开始加载。