使用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解析器,以便它也插入此属性? (有关设置解析器属性的文档没有说明如何)。
感谢您的帮助。
答案 0 :(得分:2)
SAX以与属性不同的方式处理命名空间声明。在startElement()事件中通知属性,在startPrefixMapping()事件中通知名称空间(如果请求)。