【问题标题】:Sax Parser Character Array to Integer?Sax解析器字符数组到整数?
【发布时间】:2010-04-04 20:10:56
【问题描述】:

我正在尝试将标签的内容放入我的 java Sax 解析器中的变量中。但是,Characters 方法只返回 Char 数组。有没有办法把 Char 数组变成 Int ???

public void characters(char ch[], int start, int 长度){

  if(this.in_total_results) {
      // my INT varialble would be nice here!
  } 

}

任何人都可以帮忙吗?

亲切的问候,

安迪

【问题讨论】:

    标签: java android sax saxparser


    【解决方案1】:

    要真正正确,您需要累积字符中传递的值,因为每个标签可能会多次调用它。

    如果文本中有实体,这可能会发生。 <a>123</a> 等标签等同于 <a>123</a>(49、50、51 是说明性的,但我认为这些是 1、2、3 的正确代码)

    所以这里摘自this question

    private StringBuffer curCharValue = new StringBuffer(1024);
    
    @Override
    public void startElement (String uri, String localName,
                  String qName, Attributes attributes) throws SAXException {
        if(qName.equals("author")){
            curCharValue.clear();
        }
    }
    
    @Override
    public void characters (char ch[], int start, int length) throws SAXException
    {
         //already synchronized
        curCharValue.append(char, start, length);
    }
    
    @Override
    public void endElement (String uri, String localName, String qName)
    throws SAXException
    {
        if(qName.equals("author")){
            String author = curCharValue.toString();
        }
    }
    

    要将StringBuffer 转换为int,只需使用new Integer( curCharValue.toString() )。请注意,正如评论中所指出的,还有其他方法可以从 String 转换为 Integerint

    【讨论】:

    • 很好的答案,我更喜欢 Integer.parseInt(..) 而不是 new Integer(...),因为它返回一个“int”而不是一个“整数”,而且效率更高.如果需要整数,我会使用 Integer.valueOf(..)
    猜你喜欢
    • 2019-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多