1

使用 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 解析器以便它也插入这个属性?(关于设置解析器属性的文档没有说明如何)。

谢谢你的帮助。

4

1 回答 1

2

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

于 2011-02-04T15:25:15.887 回答