XmlDataSource.GetXmlDocument Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Lädt die XML-Daten in den Speicher – entweder direkt aus dem zugrunde liegenden Datenspeicher oder aus dem Cache – und gibt sie als XmlDataDocument-Objekt zurück.
public:
System::Xml::XmlDocument ^ GetXmlDocument();
public System.Xml.XmlDocument GetXmlDocument ();
member this.GetXmlDocument : unit -> System.Xml.XmlDocument
Public Function GetXmlDocument () As XmlDocument
Gibt zurück
Ein XmlDataDocument-Objekt, das das XML darstellt, das in der Data-Eigenschaft oder in der durch die DataFile-Eigenschaft identifizierten Datei angegeben ist. Dabei werden alle Transformationen und XPath-Abfragen angewendet.
Ausnahmen
Für die DataFile-Eigenschaft wird eine URL angegeben. Das XmlDataSource-Steuerelement verfügt jedoch nicht über die entsprechenden Berechtigungen für die Webressource.
Für die DataFile-Eigenschaft ist eine URL angegeben, jedoch keine HTTP-basierte URL.
- oder - Vor dem Verwenden des XmlDataSource-Steuerelements wurde ein relativer Pfad zur Entwurfszeit vom Designer nicht ordnungsgemäß zugeordnet.
- oder - Sowohl Zwischenspeicherung als auch Clientidentitätswechsel sind aktiviert. Das XmlDataSource-Steuerelement unterstützt keine Zwischenspeicherung, wenn der Clientidentitätswechsel aktiviert ist.
Der Zugriff auf den für die DataFile-Eigenschaft angegebenen Pfad wird verweigert.
Beispiele
Dieser Abschnitt enthält zwei Codebeispiele. Im ersten Beispiel wird veranschaulicht, wie ein XmlDataSource Steuerelement mit einem TreeView Steuerelement verwendet wird, um XML-Daten anzuzeigen und zu bearbeiten, die in einer XML-Datei enthalten sind. Im zweiten Beispiel wird veranschaulicht, wie Sie ein XmlDataSource Steuerelement mit einem vorlagenbasierten Repeater Steuerelement verwenden, um XML-Daten anzuzeigen und zu bearbeiten, die in einer XML-Datei enthalten sind.
Im folgenden Codebeispiel wird veranschaulicht, wie Sie ein XmlDataSource Steuerelement mit einem TreeView Steuerelement verwenden, um XML-Daten anzuzeigen und zu bearbeiten, die in einer XML-Datei enthalten sind. Die Daten werden im Arbeitsspeicher mithilfe der GetXmlDocument Methode jedes Mal bearbeitet, wenn Sie einen TreeView Knoten auswählen und dann in der XML-Datei gespeichert. Schließlich wird das TreeView Steuerelement aufgerufen, DataBind um die angezeigten Daten zu aktualisieren.
<%@ 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>
Im folgenden Codebeispiel wird veranschaulicht, wie Sie ein XmlDataSource Steuerelement mit einem vorlagenbasierten Repeater Steuerelement verwenden, um XML-Daten anzuzeigen und zu bearbeiten, die in einer XML-Datei enthalten sind. Wie im vorherigen Beispiel werden die Daten im Arbeitsspeicher mithilfe der XmlDataDocument von der GetXmlDocument Methode abgerufenen Daten bearbeitet. Schließlich wird das TreeView Steuerelement aufgerufen, DataBind um die angezeigten Daten zu aktualisieren.
<%@ 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>
Die XML-Datei in den Codebeispielen weist die folgenden Daten auf:
<?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>
Hinweise
Verwenden Sie die GetXmlDocument Methode, um direkten Zugriff auf eine Speicherdarstellung der zugrunde liegenden XML-Daten zu erhalten.
Sie können das zurückgegebene XmlDataDocument Objekt bearbeiten und dann aufrufen Save , um Ihre Änderungen an der durch die DataFile Eigenschaft angegebenen XML-Datei beizubehalten. Es müssen mehrere Anforderungen erfüllt werden, bevor das XmlDataDocument Objekt erfolgreich gespeichert werden kann. Weitere Informationen finden Sie unter der Methode Save.