使用SAX读取Xml属性值时出错

时间:2015-03-10 14:06:31

标签: java xml sax

使用SAX读取xml属性值时,我有一些奇怪的行为。它似乎是我使用的SAX库中的一个错误,它是系统默认的。

Xml非常简单:

<?xml version="1.0"?>
<VOTABLE version="1.1">
    <RESOURCE type="results">
        <INFO name="QUERY_STATUS" value="OK" />
        <TABLE>
            <FIELD ID="Reference" ucd="DATA_LINK" datatype="char" arraysize="*" />
            <FIELD ID="URN" ucd="HCSS_URN" datatype="char" arraysize="*" />
            <FIELD ID="HCSSFileName" ucd="HCSS_FILE_NAME" datatype="char" arraysize="*" />
        </TABLE>
    </RESOURCE>
</VOTABLE>

例如,我有时会在读取属性值时看到: startElement:Attr:&#39; cCSS_FILE_NAME&#39;来自com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser $ AttributesProxy

使用例如attributes.getValue(id);文本解析出错了。并且应该是HCSS_FILE_NAME。

似乎在各种论坛上广泛记录了内置的SAX解析器存在许多错误,例如我发现了以下内容:

https://community.oracle.com/thread/1627769 http://bugs.java.com/bugdatabase/view_bug.do?bug_id=6690015

我也读过类似于xml 1.1的内容,但事实并非如此,或者读取长属性值时出现问题,但情况并非如此。

我只能考虑尝试配置不同的SAX Parser,例如: org.apache.xerces.jaxp.SAXParserFactoryImpl

感谢您的任何提示。

1 个答案:

答案 0 :(得分:0)

不要使用内置于JDK的XML解析器。它是错误的,最常见的错误表现为腐败的属性值。这个bug已存在多年,据我所知,所有JDK版本都存在。切换到使用Apache的Xerces版本。

相关问题