XmlDataDocument.Load 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
使用指定的資料來源載入 XmlDataDocument
,並且將 DataSet 與載入的資料同步。
多載
Load(Stream) |
從指定的資料流載入 |
Load(TextReader) |
從指定的 TextReader 載入 |
Load(String) |
使用指定的 URL 載入 |
Load(XmlReader) |
從指定的 XmlReader 載入 |
備註
注意
若要以關係方式檢視 XML 資料,您必須先指定要用於資料對應的架構。 您可以藉由呼叫 ReadXmlSchema 方法或手動建立 DataSet
資料表和資料行來完成。 必須先完成此步驟,才能呼叫 Load
。
XmlDataDocument
不支援建立實體參考。 如果資料包含實體參考,方法 Load
會解析並展開任何實體參考。 不過,如果您使用採用 XmlReader 做為引數的多 Load
載,則必須指定 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
包含要載入之 XML 文件的檔案的 URL。
備註
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
XmlReader
,包含要載入的 XML 文件。
例外狀況
載入的 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.ExpandEntities 的 EntityHandling , (這是預設行為) 並將 傳遞給 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 會擲回例外狀況。
如果將讀取器置於對文件之根層級而言是無效的分葉節點 (例如,泛空白字元或屬性節點) 上,則讀取器會繼續讀取,直到將其置於可用於根層級的節點上。 此時文件會開始載入。