XmlDataSource.GetXmlDocument XmlDataSource.GetXmlDocument XmlDataSource.GetXmlDocument XmlDataSource.GetXmlDocument Method

Definizione

Carica in memoria i dati XML, direttamente dall'archivio dati sottostante o dalla cache, e li restituisce nella forma di un oggetto 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

Restituisce

Oggetto XmlDataDocument che rappresenta l'XML specificato nella proprietà Data o nel file identificato dalla proprietà DataFile con l'applicazione di eventuali trasformazioni e query della proprietà 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.

Eccezioni

Un URL viene specificato per la proprietà DataFile. Il controllo XmlDataSource tuttavia non dispone delle autorizzazioni corrette per la risorsa Web.A URL is specified for the DataFile property; however, the XmlDataSource control does not have the correct permissions for the Web resource.

Un URL è specificato per la proprietà DataFile; tuttavia, non è un URL basato su HTTP.A URL is specified for the DataFile property; however, it is not an HTTP-based URL.

In alternativa-or- Nella finestra di progettazione non è stato eseguito in modo corretto il mapping di un percorso relativo alla fase di progettazione prima di utilizzare il controllo XmlDataSource.A design-time relative path was not mapped correctly by the designer before using the XmlDataSource control.

In alternativa-or- Sono abilitate sia la memorizzazione nella cache che la rappresentazione del client.Both caching and client impersonation are enabled. Il controllo XmlDataSource non supporta la memorizzazione nella cache quando è abilitata la rappresentazione del client.The XmlDataSource control does not support caching when client impersonation is enabled.

L'accesso al percorso specificato per la proprietà DataFile viene negato.Access is denied to the path specified for the DataFile property.

Esempi

In questa sezione sono riportati due esempi di codice.This section contains two code examples. Nel primo esempio viene illustrato come utilizzare un XmlDataSource controllare con un TreeView controllo per visualizzare e modificare dati XML contenuti in un file 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. Nel secondo esempio viene illustrato come utilizzare un XmlDataSource controllo con una basata su modelli Repeater controllo per visualizzare e modificare dati XML contenuti in un file 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.

Esempio di codice seguente viene illustrato come utilizzare un XmlDataSource controllare con un TreeView controllo per visualizzare e modificare dati XML contenuti in un file 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. I dati vengono modificati in memoria usando il GetXmlDocument metodo ogni volta che si seleziona un TreeView nodo e viene quindi salvato nel file 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. Infine DataBind viene chiamato sul TreeView controllo per aggiornare i dati che vengono visualizzati.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>

Esempio di codice seguente viene illustrato come utilizzare un XmlDataSource controllo con una basata su modelli Repeater controllo per visualizzare e modificare dati XML contenuti in un file 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. Come nell'esempio precedente, i dati vengono modificati in memoria usando il XmlDataDocument recuperati tramite il GetXmlDocument (metodo).As with the previous example, the data is manipulated in memory using the XmlDataDocument retrieved by the GetXmlDocument method. Infine DataBind viene chiamato sul TreeView controllo per aggiornare i dati che vengono visualizzati.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>

Il file XML degli esempi di codice presenta i seguenti dati: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>  

Commenti

Usare il GetXmlDocument metodo per l'accesso diretto a una rappresentazione in memoria dei dati XML sottostanti.Use the GetXmlDocument method for direct access to an in-memory representation of the underlying XML data.

È possibile modificare l'oggetto restituito XmlDataDocument dell'oggetto e quindi chiamare Save per confermare le modifiche al file XML specificato da di DataFile proprietà.You can manipulate the returned XmlDataDocument object and then call Save to persist your changes to the XML file specified by the DataFile property. Diversi requisiti devono essere soddisfatti prima di XmlDataDocument oggetto può essere salvato correttamente.Several requirements must be met before the XmlDataDocument object can be saved successfully. Per altre informazioni, vedere il metodo Save.For more information, see the Save method.

Si applica a

Vedi anche