使用 CDATA 的 SQL Server XML 输出
有没有办法让 SQL Server XML 返回使用 CDATA?我有 SQL Server 返回的 XML,如下所示:
<locations>
<site id="124">
<sitename>Texas A & M</sitename>
</site>
</locations>
当我需要这样时:
<locations>
<site id="124">
<sitename><![CDATA[Texas A & M]]></sitename>
</site>
</locations>
Is there a way to have an SQL Server XML return use CDATA? I have XML being returned by SQL Server like this:
<locations>
<site id="124">
<sitename>Texas A & M</sitename>
</site>
</locations>
When I am required to have this:
<locations>
<site id="124">
<sitename><![CDATA[Texas A & M]]></sitename>
</site>
</locations>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
查看 FOR XML EXPLICIT 的选项(参数Directive< /em>)。它提供了更大程度的控制,您还可以指定 CDATA。这是一个很好的教程。
代码改编自该教程:
Look at the options of FOR XML EXPLICIT (parameter Directive). It gives the greater degree of control and you can also specify CDATA. Here is a good tutorial.
And the code addapted from that tutorial:
以下是我获取 CDATA 的方法的示例:
以下是来自我的类似黄鼠狼的 CDATA 处理函数的相关详细信息:
Here is an example of my way of getting CDATA:
Here is the relevant detail from my weasel-like, CDATA-handling function:
正如乔尔在上面的评论中提到的,这两种形式应该意味着完全相同的事情。但是,如果确实需要 CDATA 形式,那么您可以编写一个后处理器,将第一个形式作为输入并使用 CDATA 输出第二个形式。
执行此操作时,后处理器将对第一种形式中的 XML 转义数据进行取消编码,并使用 CDATA 兼容方法对其进行重新编码。请参阅问题有没有办法转义 xml 中的 CDATA 结束标记? 有关 CDATA 转义的注意事项。
As Joel mentioned in the comment above, those two forms should mean exactly the same thing. However, if the CDATA form is really required, then you could write a post-processor that takes the first form as input and outputs the second form using CDATA.
When doing this, a post-processor would unencode the XML-escaped data in the first form, and re-encode it using a CDATA-compatible method. See the question Is there a way to escape a CDATA end token in xml? for considerations regarding CDATA escaping.