XmlWriter.WriteNode() 不为任何元素写入标记
本文关键字:元素 任何 WriteNode XmlWriter | 更新日期: 2023-09-27 18:36:35
我正在开发一个尝试写入XML数据的C#.NET程序
从 SQL Server 返回,将由 XmlReader 访问
由 SqlCommand.ExecuteXmlReader()
方法返回。
SqlCommand 查询文本是"SELECT ... FOR XML, ELEMENTS
"。
该代码将 XML 数据从 XmlReader 复制到 XmlWriter,通过使用 XmlWriter.WriteNode() 方法。
但是 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
尝试不将 XML 作为 SQL XML 实体返回,而是作为字符串在数据集中返回,然后打印字符串,以便 CDATA 不会被剥离。