【发布时间】:2012-07-11 21:36:28
【问题描述】:
我正在使用 DefaultHandler 解析出基于 XML 的 InputStream。它工作正常,但有一个例外。所有字符都转换为小写。 例如,如果我的 xml 有一个像 VALUE 这样的元素,我在解析后看到的是 value(而不是 VALUE)。 任何线索如何在解析原始大小写时获取值(大写而不是小写)?
public void endElement(String uri, String name, String qName) throws SAXException {
try {
if(name.equalsIgnoreCase("taga")){
System.err.println("value parsed .. "+_objBuffer.toString());
}
catch (Exception e) {}
}
public void characters(char[] ch, int start, int length) throws SAXException {
try{
_objBuffer.append(ch, start, length);
} catch(Exception e) {}
}
【问题讨论】:
-
你能提供更多关于
DefaultHandler的信息吗? SAX 接口本身对字符大小写不做任何事情,并且任何标准 XML 代码都不应该这样做,因为大小写在 XML 中很重要(与 HTML 不同)。 -
@Francis,我已经更新了上面我用来解析的代码,你还需要一些其他信息吗?
-
您应该考虑为 XML 解析器设置的选项。也许有什么东西告诉它对所有东西都使用小写。
-
这就是我配置解析器的方式,我无法理解哪个选项将所有内容转换为小写 SAXParserFactory spf = SAXParserFactory.newInstance(); spf.setValidating(false); spf.setNamespaceAware(true); SAXParser 解析器 = spf.newSAXParser(); parser.parse(xmlstream, mySaxParser);
-
在 characters() 中设置断点以查看您实际获取的解析器并查看其配置。我在您发布的内容中看不到任何明显的内容。