XmlDataSource.GetXmlDocument メソッド
アセンブリ: System.Web (system.web.dll 内)

Dim instance As XmlDataSource Dim returnValue As XmlDocument returnValue = instance.GetXmlDocument
Data プロパティで指定された XML、または、DataFile プロパティで指定されたファイル内の XML を表す XmlDataDocument オブジェクト。変換および XPath クエリはすべて適用された状態で返されます。

例外の種類 | 条件 |
---|---|
InvalidOperationException | DataFile プロパティに対して URL が指定されていますが、XmlDataSource コントロールに、その Web リソースに対する適切なアクセス許可がありません。 |
NotSupportedException | DataFile プロパティに対して、HTTP ベースではない URL が指定されています。 または XmlDataSource コントロールを使用する前に、デザイン時の相対パスがデザイナによって正しく割り当てられていませんでした。 または キャッシュとクライアント偽装の両方が有効になっています。XmlDataSource コントロールは、クライアント偽装が有効になっているときはキャッシュをサポートしません。 |
HttpException |

基になる XML データのインメモリ表現に直接アクセスするには、GetXmlDocument メソッドを使用します。
返された XmlDataDocument オブジェクトに変更を加えた後、Save を呼び出すことによって、DataFile プロパティで指定した XML ファイルに変更内容を保持できます。XmlDataDocument オブジェクトが正常に保存されるためには、いくつかの要件が満たされている必要があります。詳細については、Save メソッドのトピックを参照してください。

このセクションには、2 つのコード例が含まれています。1 つ目のコード例は、XmlDataSource コントロールを TreeView コントロールと組み合わせて使用し、XML ファイル内の XML データを表示および編集する方法を示しています。2 つ目のコード例は、XmlDataSource コントロールをテンプレートの Repeater コントロールと組み合わせて使用し、XML ファイル内の XML データを表示および編集する方法を示しています。
次のコード例は、XmlDataSource コントロールを TreeView コントロールと組み合わせて使用し、XML ファイル内の XML データを表示および編集する方法を示しています。TreeView のノードが選択されるたびに、GetXmlDocument メソッドを使用してデータをメモリ内で操作した後、XML ファイルに保存しています。最後に、TreeView コントロールに対して DataBind を呼び出し、表示するデータを更新します。
<%@ 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> <form runat="server" > <asp:xmldatasource runat="server" id="XmlSource" xpath="/bookstore/book" datafile="Booksort.xml" enableviewstate="False" enablecaching="False" /> <asp:treeview runat="server" id="TreeView1" initialexpanddepth="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>
<%@ Page LANGUAGE="CS" 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> <form runat="server"> <asp:xmldatasource runat="server" id="XmlSource" xpath="/bookstore/book" datafile="Booksort.xml" enableviewstate="False" enablecaching="False" /> <asp:treeview runat="server" id="TreeView1" initialexpanddepth="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>
<%@ Page LANGUAGE="VJ#" SMARTNAVIGATION="false" %> <%@ Import Namespace="System.Xml" %> <script runat="server" > void TreeView1_SelectedNodeChanged(Object sender, System.EventArgs e) { XmlDocument myXml = new XmlDocument(); myXml=(XmlDocument)XmlSource.GetXmlDocument(); String iterator = TreeView1.get_SelectedNode().get_DataPath(); XmlNode myNode = myXml.SelectSingleNode(iterator); myNode.set_InnerText("ThisIsATest"); XmlSource.Save(); TreeView1.DataBind(); TreeView1.ExpandAll(); }//TreeView1_SelectedNodeChanged </script> <form runat="server"> <asp:xmldatasource runat="server" id="XmlSource" xpath="/bookstore/book" datafile="Booksort.xml" enableviewstate="False" enablecaching="False" /> <asp:treeview runat="server" id="TreeView1" initialexpanddepth="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>
次のコード例は、XmlDataSource コントロールを、テンプレートの Repeater コントロールと組み合わせて使用し、XML ファイル内の XML データを表示および編集する方法を示しています。前の例と同様、データは GetXmlDocument メソッドによって取得された XmlDataDocument を使用し、メモリ内で操作されます。最後に、TreeView コントロールに対して DataBind を呼び出し、表示するデータを更新します。
<%@ 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> <form 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>
<%@ Page LANGUAGE="CS" 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> <form 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>
<%@ Page LANGUAGE="VJ#" SMARTNAVIGATION="false" %> <%@ Import NameSpace="System.Xml" %> <script runat="server" > void Button1_Click(Object sender, System.EventArgs e) { XmlDocument myXml = new XmlDocument(); myXml=(XmlDocument)XmlSource.GetXmlDocument(); String path = "bookstore/book/@publicationdate"; XmlNodeList nodeList; nodeList = myXml.SelectNodes(path); for(int iCtr =0; iCtr < nodeList.get_Count(); iCtr++) { XmlNode date = nodeList.get_ItemOf(iCtr); int helper = Int32.Parse(date.get_Value()) + 2; date.set_Value(String.valueOf(helper)); } XmlSource.Save(); Repeater1.DataBind(); }//Button1_Click </script> <form 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>
コード例の 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>

Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Weblioに収録されているすべての辞書からXmlDataSource.GetXmlDocument メソッドを検索する場合は、下記のリンクをクリックしてください。

- XmlDataSource.GetXmlDocument メソッドのページへのリンク