teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

5

追記&訂正

2019/04/21 01:34

投稿

退会済みユーザー
answer CHANGED
@@ -14,7 +14,7 @@
14
14
 
15
15
  **【追伸2】**
16
16
 
17
- DatSset.WriteXml メソッド、XmlDocument.Load メソッド、引数に Stream を取るオーバーロードを使って、MemoryStream 経由で「DB からデータを取得し XmlDocument オブジェクトを生成」をオンメモリで行うサンプルです。DB は MySQL のサンプル world の country テーブルです。
17
+ DatSset.WriteXml メソッド、XmlDocument.Load メソッド、引数に Stream を取るオーバーロードを使って、MemoryStream 経由で「DB からデータを取得し XmlDocument オブジェクトを生成」をオンメモリで行うサンプルです。DB は MySQL のサンプル world の country テーブルです。
18
18
 
19
19
  コードは C# ですが読めなければ変換サービス [http://converter.telerik.com/](http://converter.telerik.com/) を使ってみてください。
20
20
 

4

追記&訂正

2019/04/21 01:34

投稿

退会済みユーザー
answer CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
  ユーザーに返すものとかではではなく、内部処理の話ですか?
14
14
 
15
- 【追伸2】
15
+ **【追伸2】**
16
16
 
17
17
  DatSset.WriteXml メソッド、XmlDocument.Load メソッドは、引数に Stream を取るオーバーロードを使って、MemoryStream 経由で「DB からデータを取得し XmlDocument オブジェクトを生成」をオンメモリで行うサンプルです。DB は MySQL のサンプル world の country テーブルです。
18
18
 

3

追記

2019/04/21 01:32

投稿

退会済みユーザー
answer CHANGED
@@ -10,4 +10,98 @@
10
10
 
11
11
  質問に書かれたメソッドをよく見てみると XmlDocument を返してますが、ASP.NET Web アプリでユーザーにそれを返すということはないはずですけど。
12
12
 
13
- ユーザーに返すものとかではではなく、内部処理の話ですか?
13
+ ユーザーに返すものとかではではなく、内部処理の話ですか?
14
+
15
+ 【追伸2】
16
+
17
+ DatSset.WriteXml メソッド、XmlDocument.Load メソッドは、引数に Stream を取るオーバーロードを使って、MemoryStream 経由で「DB からデータを取得し XmlDocument オブジェクトを生成」をオンメモリで行うサンプルです。DB は MySQL のサンプル world の country テーブルです。
18
+
19
+ コードは C# ですが読めなければ変換サービス [http://converter.telerik.com/](http://converter.telerik.com/) を使ってみてください。
20
+
21
+ ```
22
+ using System;
23
+ using System.Collections.Generic;
24
+ using System.Linq;
25
+ using System.Text;
26
+ using System.Threading.Tasks;
27
+ using System.Data;
28
+ using System.Data.SqlClient;
29
+ using System.IO;
30
+ using System.Xml;
31
+ using MySql.Data.MySqlClient;
32
+
33
+ namespace ConsoleApplication2
34
+ {
35
+ class Program
36
+ {
37
+ static void Main(string[] args)
38
+ {
39
+ string connectionString = @"接続文字列";
40
+ string commandText = "SELECT Code, Name, Continent, SurfaceArea, IndepYear, Population " +
41
+ "FROM country WHERE Region='North America'";
42
+ DataSet dataset = new DataSet();
43
+ using (MySqlConnection connection = new MySqlConnection(connectionString))
44
+ {
45
+ using (MySqlCommand command = new MySqlCommand(commandText, connection))
46
+ {
47
+ MySqlDataAdapter adapter = new MySqlDataAdapter();
48
+ adapter.SelectCommand = command;
49
+ adapter.Fill(dataset);
50
+ }
51
+ }
52
+ MemoryStream stream = new MemoryStream();
53
+ dataset.WriteXml(stream, XmlWriteMode.WriteSchema);
54
+ XmlDocument xmlDocument = new XmlDocument();
55
+ stream.Position = 0L;
56
+ xmlDocument.Load(stream);
57
+
58
+ Console.WriteLine(xmlDocument.OuterXml);
59
+
60
+ }
61
+ }
62
+ }
63
+ ```
64
+ 結果は以下の通りです。(見やすくなるよう改行とインデントを入れてます)
65
+
66
+ ```
67
+ <NewDataSet>
68
+ <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
69
+ <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
70
+ <xs:complexType>
71
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
72
+ <xs:element name="Table">
73
+ <xs:complexType>
74
+ <xs:sequence>
75
+ <xs:element name="Code" type="xs:string" minOccurs="0" />
76
+ <xs:element name="Name" type="xs:string" minOccurs="0" />
77
+ <xs:element name="Continent" type="xs:string" minOccurs="0" />
78
+ <xs:element name="SurfaceArea" type="xs:float" minOccurs="0" />
79
+ <xs:element name="IndepYear" type="xs:short" minOccurs="0" />
80
+ <xs:element name="Population" type="xs:int" minOccurs="0" />
81
+ </xs:sequence>
82
+ </xs:complexType>
83
+ </xs:element>
84
+ </xs:choice>
85
+ </xs:complexType>
86
+ </xs:element>
87
+ </xs:schema>
88
+ <Table>
89
+ <Code>BMU</Code>
90
+ <Name>Bermuda</Name>
91
+ <Continent>North America</Continent>
92
+ <SurfaceArea>53</SurfaceArea>
93
+ <Population>65000</Population>
94
+ </Table>
95
+ <Table>
96
+ <Code>CAN</Code>
97
+ <Name>Canada</Name>
98
+ <Continent>North America</Continent>
99
+ <SurfaceArea>9970610</SurfaceArea>
100
+ <IndepYear>1867</IndepYear>
101
+ <Population>31147000</Population>
102
+ </Table>
103
+
104
+ ・・・中略・・・
105
+
106
+ </NewDataSet>
107
+ ```

2

追記&訂正

2019/04/21 01:29

投稿

退会済みユーザー
answer CHANGED
@@ -10,4 +10,4 @@
10
10
 
11
11
  質問に書かれたメソッドをよく見てみると XmlDocument を返してますが、ASP.NET Web アプリでユーザーにそれを返すということはないはずですけど。
12
12
 
13
- ユーザーに返すものとはではなく、内部処理の話ですか?
13
+ ユーザーに返すものとかではではなく、内部処理の話ですか?

1

追記

2019/04/18 23:54

投稿

退会済みユーザー
answer CHANGED
@@ -2,4 +2,12 @@
2
2
 
3
3
  DataSet.WriteXml メソッドには引数に Stream を取るオーバーロードがありますのでそれを使って、その引数に Response.OutputStream を設定したらよさそうです。
4
4
 
5
- お試しください。試してダメなら連絡ください(その際はどのように試したかの詳細情報も連絡ください)。
5
+ お試しください。試してダメなら連絡ください(その際はどのように試したかの詳細情報も連絡ください)。
6
+
7
+ **【追伸】**
8
+
9
+ ASP.NET ということで、ブラウザでアクセスしてくるユーザーに .xml ファイルを返すと思っていましたが、違うのでしょうか?
10
+
11
+ 質問に書かれたメソッドをよく見てみると XmlDocument を返してますが、ASP.NET Web アプリでユーザーにそれを返すということはないはずですけど。
12
+
13
+ ユーザーに返すものとはではなく、内部処理の話ですか?