【问题标题】:SQL Server: XPATH Query failingSQL Server:XPATH 查询失败
【发布时间】:2013-04-05 14:05:51
【问题描述】:

我正在使用 SQL Server Management Studio 处理存储过程。有一列包含我尝试使用 XPATH 访问的 XML,但出现此错误:

不允许使用内部子集 DTD 解析 XML。使用带有样式选项 2 的 CONVERT 来启用有限的内部子集 DTD 支持`

我阅读了有关转换和导入 xml 的文档,但没有运气。

明确地说,我将 XML 存储在表的列中,现在想在存储过程中将其查询到内存中后使用 xpath 访问它。有谁知道我该怎么办?

【问题讨论】:

    标签: sql-server xml xpath


    【解决方案1】:

    您最有可能得到这个,因为您在 XML 内部的某个地方使用了这样的文档定义:(MSDN example of DTD)

    <!DOCTYPE DOC [<!ATTLIST elem1 attr1 CDATA "defVal1">]><elem1>January</elem1>
    

    Microsoft 默认阻止此操作,因为它会造成潜在的安全漏洞。带有样式选项 2 的转换消息告诉您,您可以启用对 DTD 的部分支持,以便通过使用 CONVERT function as it relates to XML 来处理此 XML。

    我没有这样做的个人经验,所以我只能提供 MSDN 的链接。

    唯一的其他选项是在 Microsoft 不推荐的服务器上启用完整的 DTD 支持。

    【讨论】:

    • 好的,好的,谢谢。查看文档后,命令如下convert(XML, myXmlAsString,2)
    • 为什么这是一个潜在的安全漏洞?
    猜你喜欢
    • 1970-01-01
    • 2012-05-20
    • 2019-06-18
    • 1970-01-01
    • 2010-09-26
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    相关资源
    最近更新 更多