我试图在我的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! }
}
任何人都可以提供帮助吗?
亲切的问候,
安迪
答案 0 :(得分:3)
要真正正确,您需要累积在字符中传递的值,因为每个标记可能会多次调用它。
如果文本中有实体,则会发生这种情况。像<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
转换为Integer
或int
,如评论中所述。