【问题标题】:Xerces SAX parser ignore the xmlxs:xsi attribute as an attribute of an elementXerces SAX 解析器忽略 xmlxs:xsi 属性作为元素的属性
【发布时间】:2011-06-21 10:01:51
【问题描述】:

使用 Xerces SAX 解析器我尝试检索此 XML 文件的所有元素及其属性:

------------- 开始解析 XML 文件 ---------------->

<?xml version="1.0" encoding="UTF-8"?> <invoice xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="my.xsd"> <parties> (...)

------------- 结束要解析的 XML 文件 ---------------->

在获取元素“发票”的属性时,Xerces++ 不会在元素“发票”的“属性”列表中插入“xmlns:xsi”属性。 但是,属性“xsi:noNamespaceSchemaLocation”被插入到列表中。

为什么?从 XML 标准的角度来看,是否有特定的原因? 有没有办法配置 Xerces++ SAX 解析器以便它也插入这个属性? (关于设置解析器属性的文档没有说明如何)。

感谢您的帮助。

【问题讨论】:

    标签: xml parsing xml-namespaces xerces xsi


    【解决方案1】:

    SAX 对待命名空间声明与属性不同。在 startElement() 事件中通知属性,在 startPrefixMapping() 事件中通知命名空间(如果请求)。

    【讨论】:

    • 非常感谢,这回答了我的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-14
    • 1970-01-01
    • 2014-03-16
    • 2015-06-18
    • 2014-03-21
    • 2011-10-18
    • 1970-01-01
    相关资源
    最近更新 更多