XML データを書き込もうとしている C#.NET プログラムに取り組んでいます。
SQL Server から返され、XmlReader によってアクセスされる
メソッドによって返されSqlCommand.ExecuteXmlReader()
ます。
SqlCommand クエリ テキストは " SELECT ... FOR XML, ELEMENTS
" です。
このコードは、XmlWriter.WriteNode() メソッドを使用して、XML データを XmlReader から XmlWriter にコピーします。
しかし、XmlWriter.WriteNode() は、要素の開始タグと終了タグを書き込みません。要素のテキスト コンテンツのみを書き込みます。
明らかに、私の意図はタグとエレメントのテキストを書くことです。コードと SELECT Query および WriteNode() メソッドからの出力を含めました。下。
XmlWriter.WriteNode() がタグを書き込まず、テキスト データのみを書き込む理由を説明している人はいますか?
C#:
protected void Page_Load(object sender, EventArgs e)
{
XmlDocument xmlDocument = new XmlDocument();
XPathNavigator xPathNavigator = xmlDocument.CreateNavigator();
string connectionStr = "Data Source=.\\SQLEXPRESS;"
+
"Initial Catalog=AdventureWorks;"
+
"Integrated Security=True";
using (SqlConnection sqlConnection = new SqlConnection(connectionStr))
{
SqlCommand sqlCommand
= new SqlCommand("SELECT TOP 1 ContactID, " +
" Title, " +
" FirstName, MiddleName, LastName, " +
" Suffix, " +
" EmailAddress, Phone "
+
" FROM Person.Contact AS Contact "
+
" FOR XML AUTO, ELEMENTS ",
sqlConnection);
sqlConnection.Open();
using (XmlWriter xmlWriter = xPathNavigator.PrependChild())
{
xmlWriter.WriteStartElement("Contacts");
using (XmlReader xmlReader = sqlCommand.ExecuteXmlReader())
{
xmlWriter.WriteNode(xmlReader,
true);
}
xmlWriter.WriteEndElement();
}
}
Response.ContentType = "text/xml";
xmlDocument.Save(Response.Output);
}
SQL Server Management Studio で返される結果セット:
<Contact>
<ContactID>1</ContactID>
<Title>Mr.</Title>
<FirstName>Gustavo</FirstName>
<LastName>Achong</LastName>
<EmailAddress>gustavo0@adventure-works.com</EmailAddress>
<Phone>398-555-0132</Phone>
</Contact>
.aspx 出力:
1 グスタボ・アチョン氏 gustavo0@adventure-works.com 398-555-0132