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 XmlDataSource ein Steuerelement mit einem TreeView Steuerelement verwendet wird, um XML-Daten anzuzeigen und zu bearbeiten, 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 in einer XML-Datei.
Im folgenden Codebeispiel wird veranschaulicht, wie Sie ein Steuerelement mit einem XmlDataSource TreeView Steuerelement verwenden, um XML-Daten anzuzeigen und zu bearbeiten, die in einer XML-Datei enthalten sind. Die Daten werden im Arbeitsspeicher mit 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 wird die Daten im Arbeitsspeicher mithilfe des XmlDataDocument von der GetXmlDocument Methode abgerufenen Objekts 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
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 wird XML-Daten von einer XML-Datei vom XmlDataSource Steuerelement geladen. Sie ändern den XmlDataDocument Arbeitsspeicher mithilfe der GetXmlDocument Methode, und speichern Sie dann die 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 von der Eigenschaft angegeben ist, nicht aus inline-XML-Daten, die in der DataFile Data Eigenschaft angegeben sind.
Keine XSLT-Transformation wird in den Transform eigenschaften angegeben TransformFile .
Die Save Methode behandelt keine gleichzeitigen Speichervorgänge durch verschiedene Anforderungen. Wenn mehr als ein Benutzer eine XML-Datei über das XmlDataSource Steuerelement bearbeitet, besteht keine Garantie, dass alle Benutzer mit den gleichen Daten arbeiten. Es ist auch möglich, dass ein Save Vorgang aufgrund dieser gleichen Übereinstimmungsprobleme fehlschlägt.