XmlDataSource.Save 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
속성이 설정된 경우 컨트롤이 현재 메모리에 XmlDataSource 보유하고 있는 XML 데이터를 디스크에 DataFile 저장합니다.
public:
void Save();
public void Save();
member this.Save : unit -> unit
Public Sub Save ()
예외
XML 데이터가 속성 대신 속성을 사용하여 Data 로드되었습니다 DataFile .
-또는-
속성에 DataFile 대한 URL이 지정되지만 컨트롤에 XmlDataSource 웹 리소스에 대한 올바른 권한이 없습니다.
속성에 DataFile 대한 URL이 지정되지만 HTTP 기반 URL은 아닙니다.
-또는-
컨트롤을 사용하기 XmlDataSource 전에 디자이너가 디자인 타임 상대 경로를 올바르게 매핑하지 않았습니다.
속성에 지정된 경로에 대한 액세스가 DataFile 거부됩니다.
예제
이 섹션에는 두 가지 코드 예제가 포함되어 있습니다. 첫 번째 코드 예제에서는 컨트롤과 함께 XmlDataSource 컨트롤을 TreeView 사용하여 XML 파일에 포함된 XML 데이터를 표시하고 편집하는 방법을 보여 줍니다. 두 번째 코드 예제에서는 서식 파일 XmlDataSource 에서 컨트롤을 Repeater 사용 하 여 표시 하 고 XML 파일에 포함 된 XML 데이터를 편집 하는 방법을 보여 줍니다.
다음 코드 예제에서는 컨트롤을 XmlDataSource 사용 하 여 표시 하 고 XML 파일에 포함 된 XML 데이터를 편집 하는 컨트롤을 사용 TreeView 하는 방법을 보여 줍니다. 데이터는 노드를 선택할 GetXmlDocument 때마다 메서드를 TreeView 사용하여 메모리에서 조작된 다음 XML 파일에 저장됩니다. 마지막으로 DataBind 컨트롤이 표시하는 데이터를 새로 고치도록 컨트롤에서 TreeView 호출됩니다.
<%@ 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>
다음 코드 예제에서는 서식 파일 XmlDataSource 에서 컨트롤을 Repeater 사용 하 여 표시 하 고 XML 파일에 포함 된 XML 데이터를 편집 하는 방법을 보여 줍니다. 이전 예제와 마찬가지로 메서드에서 검색한 개체를 XmlDataDocument 사용하여 메모리에서 데이터가 조작됩니다 GetXmlDocument . 마지막으로 DataBind 컨트롤이 표시하는 데이터를 새로 고치도록 컨트롤에서 TreeView 호출됩니다.
<%@ 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>
코드 예제의 XML 파일에는 다음 데이터가 있습니다.
<?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>
설명
XmlDataSource 컨트롤은 일반적으로 읽기 전용 데이터 바인딩 시나리오에서 사용 되는 동안 기본 XML 데이터 파일에서 XML 데이터를 편집 하는 컨트롤을 사용할 XmlDataSource 수 있습니다. 이러한 시나리오에서는 XML 데이터가 컨트롤에 의해 XmlDataSource XML 파일에서 로드됩니다. 메서드를 사용하여 메모리 내 XmlDataDocument 를 GetXmlDocument 수정한 다음 메서드를 호출하여 XML 데이터 파일에 저장합니다 Save . 이 편집 가능한 XML 시나리오는 다음 조건이 충족될 때 가능합니다.
XML 데이터는 속성에 지정된 인라인 XML 데이터가 아니라 속성으로 표시된 DataFile XML 파일에서 로드됩니다 Data .
또는 Transform 속성에 XSLT 변환이 TransformFile 지정되지 않습니다.
메서드는 Save 다른 요청에 의한 동시 저장 작업을 처리하지 않습니다. 둘 이상의 사용자가 컨트롤을 통해 XmlDataSource XML 파일을 편집하는 경우 모든 사용자가 동일한 데이터로 작동한다는 보장은 없습니다. 이러한 동일한 동시성 문제로 인해 작업이 실패할 수도 Save 있습니다.