Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用SAX读取Xml属性值时出错_Java_Xml_Sax - Fatal编程技术网

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

Java 使用SAX读取Xml属性值时出错,java,xml,sax,Java,Xml,Sax,在使用SAX读取xml属性值时,我有一些奇怪的行为。这似乎是我使用的SAX库中的一个bug,它是系统默认的 Xml非常简单: <?xml version="1.0"?> <VOTABLE version="1.1"> <RESOURCE type="results"> <INFO name="QUERY_STATUS" value="OK" /> <TABLE> <F

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

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:'cCSS_FILE_NAME'来自com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser$AttributeProxy

不知何故,文本解析在使用attributes.getValueid时出错了;并且应该是HCSS_文件名

在各种论坛上似乎都有大量的文档表明,内置SAX解析器存在许多bug,例如,我发现了以下内容:

我还读到xml 1.1中可能会出现这样的情况,但事实并非如此,或者在读取长属性值时出现问题,但情况并非如此

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


谢谢你的提示。

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

我不这么认为。你到底有什么问题?你能把它和你给出的例子联系起来吗?我认为从这个例子中可以很清楚地看出。SAX读取的属性值不正确。它返回'cCSS_FILE_NAME',但应返回xml中的内容,例如HCSS_FILE_NAME.OK。对不起,我没有看到你说的领域。您可以发布用于读取XML的代码吗?另一方面,如果要使用SAXParserFactoryImpl,可以使用:System.setPropertyjavax.xml.parsers.SAXParserFactory,org.apache.xerces.jaxp.SAXParserFactoryImpl;