【问题标题】:SAX parsing using DefaultHandler converts all text to lowercase使用 DefaultHandler 进行 SAX 解析将所有文本转换为小写
【发布时间】: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() 中设置断点以查看您实际获取的解析器并查看其配置。我在您发布的内容中看不到任何明显的内容。

标签: java xml parsing sax


【解决方案1】:

尝试检查一个实现函数equalsIgnoreCase()

您可能应该使用equals() 而不是equalsIgnoreCase()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-16
    • 2012-01-31
    • 2011-08-06
    相关资源
    最近更新 更多