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 für das XmlDataSource-Steuerelement gegenwärtig im Speicher reservierten XML-Daten auf einem Datenträger, wenn die DataFile-Eigenschaft festgelegt ist.
public:
void Save();
public void Save ();
member this.Save : unit -> unit
Public Sub Save ()
Ausnahmen
XML-Daten wurden mit der Data-Eigenschaft statt der DataFile-Eigenschaft geladen.
- oder -
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.
Der Zugriff auf den für die DataFile-Eigenschaft angegebenen Pfad wird verweigert.
Beispiele
Dieser Abschnitt enthält zwei Codebeispiele. Im ersten Codebeispiel wird veranschaulicht, wie Ein XmlDataSource Steuerelement mit einem TreeView Steuerelement zum Anzeigen und Bearbeiten von XML-Daten in einer XML-Datei verwendet wird. Im zweiten Codebeispiel wird veranschaulicht, wie Sie ein XmlDataSource Steuerelement mit einem in Vorlagen basierenden Repeater Steuerelement verwenden, um XML-Daten in einer XML-Datei anzuzeigen und zu bearbeiten.
Im folgenden Codebeispiel wird veranschaulicht, wie Ein XmlDataSource Steuerelement mit einem TreeView Steuerelement zum Anzeigen und Bearbeiten von XML-Daten in einer XML-Datei verwendet wird. Die Daten werden bei jeder Auswahl eines TreeView Knotens mit der GetXmlDocument -Methode im Arbeitsspeicher bearbeitet und dann in der XML-Datei gespeichert. Schließlich wird für 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 in Vorlagen basierenden 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 des von der XmlDataDocumentGetXmlDocument -Methode abgerufenen Objekts bearbeitet. Schließlich wird für 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 Steuerelement in der XmlDataSource 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 vom XmlDataSource Steuerelement aus einer XML-Datei geladen. Sie ändern den XmlDataDocument im 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 wird, und nicht aus in der Data -Eigenschaft angegebenen INLINE-XML-Daten.
In den Transform Eigenschaften oder TransformFile ist keine XSLT-Transformation angegeben.
Die Save -Methode verarbeitet keine gleichzeitigen Speichervorgänge durch unterschiedliche Anforderungen. Wenn mehrere Benutzer eine XML-Datei über das XmlDataSource -Steuerelement bearbeiten, gibt es keine Garantie, dass alle Benutzer mit den gleichen Daten arbeiten. Es ist auch möglich, dass ein Save Vorgang aufgrund derselben Parallelitätsprobleme fehlschlägt.