XmlDataSource.GetXmlDocument 方法

定義

將 XML 資料直接從基礎資料儲存區或從快取中載入記憶體,然後以 XmlDataDocument 物件的形式傳回它。Loads the XML data into memory, either directly from the underlying data storage or from the cache, and returns it in the form of an XmlDataDocument object.

public:
 System::Xml::XmlDocument ^ GetXmlDocument();
public System.Xml.XmlDocument GetXmlDocument ();
member this.GetXmlDocument : unit -> System.Xml.XmlDocument
Public Function GetXmlDocument () As XmlDocument

傳回

XmlDocument

XmlDataDocument 物件,表示在 Data 屬性中指定的 XML,或 DataFile 屬性所識別之檔案中的 XML,並且已套用任何轉換和 XPath 查詢。An XmlDataDocument object that represents the XML specified in the Data property or in the file identified by the DataFile property, with any transformations and XPath queries applied.

例外狀況

指定了 DataFile 屬性的 URL,不過,XmlDataSource 控制項沒有 Web 資源的正確使用權限。A URL is specified for the DataFile property; however, the XmlDataSource control does not have the correct permissions for the Web resource.

DataFile 屬性指定 URL,然而,它不是 HTTP 的 URL。A URL is specified for the DataFile property; however, it is not an HTTP-based URL.

-或--or- 在使用 XmlDataSource 控制項之前,設計工具未正確對應設計階段相對路徑。A design-time relative path was not mapped correctly by the designer before using the XmlDataSource control.

-或--or- 同時啟用快取和用戶端模擬。Both caching and client impersonation are enabled. 啟用用戶端模擬時,XmlDataSource 控制項不支援快取。The XmlDataSource control does not support caching when client impersonation is enabled.

DataFile 屬性指定之路徑的存取遭拒絕。Access is denied to the path specified for the DataFile property.

範例

本節包含兩個程式碼範例。This section contains two code examples. 第一個範例示範如何使用控制項 XmlDataSourceTreeView 控制項來顯示和編輯 xml 檔案中包含的 xml 資料。The first example demonstrates how to use an XmlDataSource control with a TreeView control to display and edit XML data contained in an XML file. 第二個範例示範如何使用 XmlDataSource 具有樣板化控制項的控制項, Repeater 來顯示和編輯 xml 檔案中包含的 xml 資料。The second example demonstrates how to use an XmlDataSource control with a templated Repeater control to display and edit XML data contained in an XML file.

下列程式碼範例將示範如何使用控制項 XmlDataSource TreeView 來顯示和編輯 xml 檔案中包含的 xml 資料。The following code example demonstrates how to use an XmlDataSource control with a TreeView control to display and edit XML data contained in an XML file. 每次您選取節點時,就會使用方法在記憶體中運算元據 GetXmlDocument TreeView ,然後再儲存至 XML 檔案。The data is manipulated in memory using the GetXmlDocument method every time you select a TreeView node, and is then saved to the XML file. 最後, DataBind 在控制項上呼叫,以重新整理 TreeView 其顯示的資料。Finally, DataBind is called on the TreeView control to refresh the data that it displays.

<%@ Page LANGUAGE="C#" SMARTNAVIGATION="false" %>
<%@ Import Namespace="System.Xml" %>

<script runat="server" >
  void TreeView1_SelectedNodeChanged(Object sender, EventArgs e)
  {
    XmlDocument myXml = new XmlDocument();
    myXml=(XmlDocument)XmlSource.GetXmlDocument();

    String iterator = TreeView1.SelectedNode.DataPath;

    XmlNode myNode = myXml.SelectSingleNode(iterator);

    myNode.InnerText = "ThisIsATest";
    XmlSource.Save();
    TreeView1.DataBind();
    TreeView1.ExpandAll();
  }
</script>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="Form1" runat="server">

      <asp:xmldatasource
        runat="server"
        id="XmlSource"
        xpath="/bookstore/book"
        datafile="Booksort.xml"
        enableviewstate="False"
        enablecaching="False" />

      <asp:treeview
        runat="server"
        id="TreeView1"
        ExpandDepth="3"
        datasourceid="XmlSource"
        maxdatabinddepth="3"
        autogeneratedatabindings="False"
        onselectednodechanged="TreeView1_SelectedNodeChanged" >
        <databindings>
          <asp:treenodebinding datamember="book" valuefield="publicationdate" />
          <asp:treenodebinding datamember="title" valuefield="#InnerText" />
          <asp:treenodebinding datamember="author" valuefield="#InnerText" />
          <asp:treenodebinding datamember="first-name" valuefield="#InnerText" />
          <asp:treenodebinding datamember="last-name" valuefield="#InnerText" />
        </databindings>
      </asp:treeview>
    </form>
  </body>
</html>
<%@ Page LANGUAGE="VB" SMARTNAVIGATION="false" %>
<%@ Import Namespace="System.Xml" %>

<script runat="server" >
  Private Sub TreeView1_SelectedNodeChanged(sender As Object, e As EventArgs)

    Dim myXml As New XmlDocument
    myXml = CType(XmlSource.GetXmlDocument(), XmlDataDocument)

    Dim iterator As String = TreeView1.SelectedNode.DataPath
    Dim myNode As XmlNode = myXml.SelectSingleNode(iterator)

    myNode.InnerText = "ThisIsATest"
    XmlSource.Save()
    TreeView1.DataBind()
    TreeView1.ExpandAll()
  End Sub ' TreeView1_SelectedNodeChanged
</script>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="Form1" runat="server">

      <asp:xmldatasource
        runat="server"
        id="XmlSource"
        xpath="/bookstore/book"
        datafile="Booksort.xml"
        enableviewstate="False"
        enablecaching="False" />

      <asp:treeview
        runat="server"
        id="TreeView1"
        ExpandDepth="3"
        datasourceid="XmlSource"
        maxdatabinddepth="3"
        autogeneratedatabindings="False"
        onselectednodechanged="TreeView1_SelectedNodeChanged" >
        <databindings>
          <asp:treenodebinding datamember="book" valuefield="publicationdate" />
          <asp:treenodebinding datamember="title" valuefield="#InnerText" />
          <asp:treenodebinding datamember="author" valuefield="#InnerText" />
          <asp:treenodebinding datamember="first-name" valuefield="#InnerText" />
          <asp:treenodebinding datamember="last-name" valuefield="#InnerText" />
        </databindings>
      </asp:treeview>
    </form>
  </body>
</html>

下列程式碼範例示範如何使用具有樣板 XmlDataSource 化控制項的控制項, Repeater 來顯示和編輯 xml 檔案中包含的 xml 資料。The following code example demonstrates how to use an XmlDataSource control with a templated Repeater control to display and edit XML data contained in an XML file. 如同上述範例,資料會使用方法所抓取的,在記憶體中操作 XmlDataDocument GetXmlDocumentAs with the previous example, the data is manipulated in memory using the XmlDataDocument retrieved by the GetXmlDocument method. 最後, DataBind 在控制項上呼叫,以重新整理 TreeView 其顯示的資料。Finally, DataBind is called on the TreeView control to refresh the data that it displays.

<%@ Page LANGUAGE="C#" SMARTNAVIGATION="false" %>
<%@ Import NameSpace="System.Xml" %>
<script runat="server" >

  void Button1_Click(Object sender, EventArgs e)
  {
    XmlDocument myXml = new XmlDocument();
    myXml=(XmlDocument)XmlSource.GetXmlDocument();

    String path = "bookstore/book/@publicationdate";
    XmlNodeList nodeList;
    nodeList = myXml.SelectNodes(path);
    foreach (XmlNode date in nodeList)
      {
        int helper = int.Parse(date.Value) + 2;
        date.Value = helper.ToString();
      }
    XmlSource.Save();
    Repeater1.DataBind();
  }

</script>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="Form1" runat="server" >

      <asp:XmlDataSource
        runat="server"
        ID="XmlSource"
        XPath="bookstore/book[@genre='novel']"
        DataFile="Booksort2.xml"
        EnableViewState="True"
        EnableCaching="False" />

      <asp:Repeater
        runat="server"
        ID="Repeater1"
        DataSourceID="XmlSource" >
          <ItemTemplate >
            <h1><%# XPath ("title/text()") %> </h1>
              <b>Author:</b><%# XPath ("author/first-name/text()") %> <%# XPath ("author/last-name/text()") %>
              <b>PublicationDate:</b><%# XPath ("@publicationdate") %>
              <b>Price:</b><%# XPath ("price/text()") %>
          </ItemTemplate>
      </asp:Repeater>


      <p><asp:Button
        runat="server"
        ID="Button1"
        onclick="Button1_Click"
        Text="Add 2 years to the Publication Date!" /></p>
</form>
</body>
</html>
<%@ Page LANGUAGE="VB" SMARTNAVIGATION="false" %>
<%@ Import Namespace="System.Xml" %>

<script runat="server" >

  Private Sub Button1_Click(sender As Object, e As EventArgs)

    Dim myXml As New XmlDocument
    myXml = CType(XmlSource.GetXmlDocument(), XmlDocument)

    Dim path As String = "bookstore/book/@publicationdate"
    Dim nodeList As XmlNodeList = myXml.SelectNodes(path)

    Dim aDate As XmlNode
    For Each aDate In  nodeList
      Dim helper As Integer = Int32.Parse(aDate.Value) + 2
      aDate.Value = helper.ToString()
    Next aDate

    XmlSource.Save()
    Repeater1.DataBind()

  End Sub 'Button1_Click
</script>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="Form1" runat="server" >

      <asp:XmlDataSource
        runat="server"
        ID="XmlSource"
        XPath="bookstore/book[@genre='novel']"
        DataFile="Booksort2.xml"
        EnableViewState="True"
        EnableCaching="False" />

      <asp:Repeater
        runat="server"
        ID="Repeater1"
        DataSourceID="XmlSource" >
          <ItemTemplate >
            <h1><%# XPath ("title/text()") %> </h1>
              <b>Author:</b><%# XPath ("author/first-name/text()") %> <%# XPath ("author/last-name/text()") %>
              <b>PublicationDate:</b><%# XPath ("@publicationdate") %>
              <b>Price:</b><%# XPath ("price/text()") %>
          </ItemTemplate>
      </asp:Repeater>


      <p><asp:Button
        runat="server"
        ID="Button1"
        onclick="Button1_Click"
        Text="Add 2 years to the Publication Date!" /></p>
</form>
</body>
</html>

程式碼範例中的 XML 檔案包含下列資料:The XML file in the code examples has the following data:

<?xml version="1.0" encoding="utf-8"?>  
 <bookstore xmlns:bk="urn:samples">  
   <book genre="novel" publicationdate="1999" bk:ISBN="0000000000">  
     <title>Secrets of Silicon Valley</title>  
     <author>  
       <first-name>Sheryl</first-name>  
       <last-name>Hunter</last-name>  
     </author>  
     <price>24.95</price>"   
     </book>  
   <book genre="novel" publicationdate="1985" bk:ISBN="1111111111">  
     <title>Straight Talk About Computers</title>  
     <author>  
       <first-name>Dean</first-name>  
       <last-name>Straight</last-name>  
     </author>  
     <price>29.95</price>  
   </book>  
</bookstore>  

備註

GetXmlDocument 可以使用方法直接存取基礎 XML 資料的記憶體中標記法。Use the GetXmlDocument method for direct access to an in-memory representation of the underlying XML data.

您可以操作傳回的 XmlDataDocument 物件,然後呼叫 Save 以保存屬性所指定之 XML 檔案的變更 DataFileYou can manipulate the returned XmlDataDocument object and then call Save to persist your changes to the XML file specified by the DataFile property. 必須符合數個需求,才能 XmlDataDocument 成功儲存物件。Several requirements must be met before the XmlDataDocument object can be saved successfully. 如需詳細資訊,請參閱 Save 方法。For more information, see the Save method.

適用於

另請參閱