ale*_*zio 1 java xml sax string-parsing
我正在尝试解析一个simil- InkML文档.每个内容的节点都有更多的元组(用逗号分隔),带有6或7个数字(负数和小数).
在测试中,我看到SAX 的方法字符不记忆所有数据.
代码:
public class PenParser extends DefaultHandler {
//code useless
public void characters(char ch[], int start, int length) throws SAXException {
//begin my debug print
StringBuilder buffer=new StringBuilder ();
for(int i=start;i<length;i++){
buffer.append(ch[i]);
}
System.out.println(">"+buffer);
//end my debug print
Run Code Online (Sandbox Code Playgroud)
在调试中,我看到缓冲区不包含感兴趣的标记的所有数量,但它只包含标记内容的前107个(或多或少)char(我的行不长于4610个字符):这很奇怪该切的焦炭通过的StringBuffer和SAX解析,在我看来.
我也使用过StringBuilder,但问题仍然存在.
有什么建议?
是的 - 这很明显.解析一个节点时,可能会多次调用字符.
您必须使用StringBuilderas成员,将内容附加到字符中并处理内容endElement.
编辑
顺便说一句.你不需要逐个字符地构建缓冲区 - 这是我的字符实现(我总是使用)
@Override
public void characters(char[] ch, int start, int length) throws SAXException
{
characters.append(new String(ch,start,length));
}
Run Code Online (Sandbox Code Playgroud)
......别忘了......
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException
{
final String content = characters.toString().trim();
// .... deal with content
// reset characters
characters.setLength(0);
}
private final StringBuilder characters = new StringBuilder(64);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2672 次 |
| 最近记录: |