Xerces SAX解析器忽略xmlxs:xsi属性作为元素的属性

时间:2011-02-04 14:41:03

标签: xml parsing xml-namespaces xerces xsi

使用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文件----------------&gt;

获取元素'invoice'的属性时,Xerces ++不会在元素'invoice'的'Attributes'列表中插入'xmlns:xsi'属性。 但是,属性“xsi:noNamespaceSchemaLocation”将插入列表中。

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

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

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