XmlDataSource.GetXmlDocument 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
XML 데이터를 내부 데이터 스토리지에서 직접 메모리로 로드하거나 캐시에서 메모리로 로드한 다음, XmlDataDocument 개체의 형식으로 반환합니다.
public:
System::Xml::XmlDocument ^ GetXmlDocument();
public System.Xml.XmlDocument GetXmlDocument ();
member this.GetXmlDocument : unit -> System.Xml.XmlDocument
Public Function GetXmlDocument () As XmlDocument
반환
XmlDataDocument 속성에 지정된 XML이나 Data 속성으로 식별된 파일의 XML을 나타내는 DataFile 개체입니다. 여기에는 변환과 XPath 쿼리가 적용되어 있습니다.
예외
DataFile 속성에 대한 URL이 지정되어 있지만 XmlDataSource 컨트롤에 웹 리소스에 대한 올바른 권한이 없는 경우
DataFile 속성에 대한 URL이 지정되어 있지만 HTTP 기반 URL이 아닌 경우
또는 XmlDataSource 컨트롤을 사용하기 전에 디자이너에서 디자인 타임 상대 경로를 올바르게 매핑하지 않은 경우
또는 캐싱과 클라이언트 가장이 모두 사용되는 경우. XmlDataSource 컨트롤은 클라이언트 가장이 사용되는 경우 캐싱을 지원하지 않습니다.
DataFile 속성의 지정된 경로에 대한 액세스가 거부된 경우
예제
이 섹션에는 두 코드 예제가 있습니다. 첫 번째 예제에 사용 하는 방법을 보여 줍니다.는 XmlDataSource 컨트롤을 TreeView 컨트롤을 표시 하 고 XML 파일에 포함 된 XML 데이터를 편집 합니다. 두 번째 예제에 사용 하는 방법을 보여 줍니다.는 XmlDataSource 템플릿 기반 컨트롤과 Repeater 컨트롤을 표시 하 고 XML 파일에 포함 된 XML 데이터를 편집 합니다.
다음 코드 예제에 사용 하는 방법을 보여 줍니다.는 XmlDataSource 컨트롤을 TreeView 컨트롤을 표시 하 고 XML 파일에 포함 된 XML 데이터를 편집 합니다. 사용 하 여 메모리에서 데이터 조작 되는 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>
설명
사용 하 여는 GetXmlDocument 메서드는 기본 XML 데이터의 메모리 내 표현에 직접 액세스 합니다.
반환 된 조작할 수 있습니다 XmlDataDocument 개체와 호출 Save 로 지정 된 XML 파일에 변경 내용을 유지 하려면를 DataFile 속성입니다. 몇 가지 요구 사항을 충족 해야 합니다 XmlDataDocument 개체를 성공적으로 저장할 수 있습니다. 자세한 내용은 Save 메서드를 참조하세요.