XmlDataSource.Save 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.
Speichert die XML-Daten, die derzeit im Arbeitsspeicher des Steuerelements auf dem XmlDataSource Datenträger gespeichert sind, wenn die DataFile Eigenschaft festgelegt ist.
public:
void Save();
public void Save();
member this.Save : unit -> unit
Public Sub Save ()
Ausnahmen
XML-Daten wurden mithilfe der Data Eigenschaft anstelle der DataFile Eigenschaft geladen.
- oder -
Für die DataFile Eigenschaft wird eine URL angegeben. Das XmlDataSource Steuerelement verfügt jedoch nicht über die richtigen Berechtigungen für die Webressource.
Für die DataFile Eigenschaft wird eine URL angegeben. Es handelt sich jedoch nicht um eine HTTP-basierte URL.
- oder -
Vor der Verwendung des XmlDataSource Steuerelements wurde vom Designer kein relativer Entwurfszeitpfad ordnungsgemäß zugeordnet.
Der Zugriff wird auf den für die DataFile Eigenschaft angegebenen Pfad verweigert.
Beispiele
Dieser Abschnitt enthält zwei Codebeispiele. Das erste Codebeispiel veranschaulicht die Verwendung eines XmlDataSource Steuerelements mit einem TreeView Steuerelement zum Anzeigen und Bearbeiten von XML-Daten, die in einer XML-Datei enthalten sind. Das zweite Codebeispiel veranschaulicht die Verwendung eines XmlDataSource Steuerelements mit einem vorlagenbasierten Repeater Steuerelement zum Anzeigen und Bearbeiten von XML-Daten, die in einer XML-Datei enthalten sind.
Im folgenden Codebeispiel wird die Verwendung eines XmlDataSource Steuerelements mit einem TreeView Steuerelement zum Anzeigen und Bearbeiten von XML-Daten in einer XML-Datei veranschaulicht. Die Daten werden bei jeder Auswahl eines TreeView Knotens im Arbeitsspeicher mithilfe der GetXmlDocument Methode bearbeitet 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 die Verwendung eines XmlDataSource Steuerelements mit vorlagenbasiertem Repeater Steuerelement zum Anzeigen und Bearbeiten von XML-Daten in einer XML-Datei veranschaulicht. Wie im vorherigen Beispiel werden die Daten mithilfe des XmlDataDocument von der GetXmlDocument Methode abgerufenen Objekts im Arbeitsspeicher 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 enthält die folgenden Daten:
<?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
Während das XmlDataSource Steuerelement in der Regel in schreibgeschützten Datenbindungsszenarien verwendet wird, können Sie das XmlDataSource Steuerelement verwenden, um XML-Daten in der zugrunde liegenden XML-Datendatei zu bearbeiten. In diesen Szenarien werden XML-Daten aus einer XML-Datei vom XmlDataSource Steuerelement geladen. Sie ändern den XmlDataDocument Arbeitsspeicher mithilfe der GetXmlDocument Methode, und speichern sie dann in der XML-Datendatei, indem Sie die Save Methode aufrufen. Dieses bearbeitbare XML-Szenario ist möglich, wenn die folgenden Bedingungen erfüllt sind:
Die XML-Daten werden aus einer XML-Datei geladen, die durch die DataFile Eigenschaft angegeben ist, nicht aus inline-XML-Daten, die in der Data Eigenschaft angegeben sind.
In den Transform Eigenschaften oder TransformFile Eigenschaften wird keine XSLT-Transformation angegeben.
Die Save Methode behandelt keine gleichzeitigen Speichervorgänge durch verschiedene Anforderungen. Wenn mehrere Benutzer eine XML-Datei über das XmlDataSource Steuerelement bearbeiten, besteht keine Garantie dafür, dass alle Benutzer mit denselben Daten arbeiten. Es ist auch möglich, dass ein Save Vorgang aufgrund dieser Parallelitätsprobleme fehlschlägt.