使用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
感谢您的任何提示。
答案 0 :(得分:0)
不要使用内置于JDK的XML解析器。它是错误的,最常见的错误表现为腐败的属性值。这个bug已存在多年,据我所知,所有JDK版本都存在。切换到使用Apache的Xerces版本。