每秒接受1000条XML格式的消息,消息是最简单的格式,并不复杂,我要将每条消息解析出来,并插入数据库,我用的DOM方法速度根本来不及,请问高手用什么方法解析更快. 格式就是这个样子的:
<雇员>
<姓名> 王玉强 </姓名>
<年龄> 25岁 </年龄>
<工资> 3190 </工资>
</雇员>
<雇员>
<姓名> 王玉强 </姓名>
<年龄> 25岁 </年龄>
<工资> 3190 </工资>
</雇员>
解决方案 »
- AIX机器上的shell脚本如何调用java代码啊
- 能不能推荐一些关于j2se的视频教程
- 在weblogic下调试关于JSP调用usebean的问题
- 问下哪有 jdk免安装版下载
- mouseEntered一个按钮的时候如何让他自动显示按钮的注释信息在一个小的注释框中??
- 30分求教如何在一个类中得到另一个servlet的变量?
- 考试了,碰到这道创建矩阵的题,哪位知道的给个代码吧!
- 正则表达式问题:在表达式中--22我的asd(1308888)--取出数字1308888
- 如何让表格jtable的头部能够在点击后有排序功能?
- 非常着急的我,关于input…………………………………………
- 如何实现四级联动的下拉列表框(列表项从数据库中取出)
- 呆瓜问题,NetBean中如何解决不支持范型的问题
上面是我要解析的XML,我是用sax解析,可是每次读第一个到第一个节点的时候,length值都是15(按字符串应该是20位),20位是分两次读取的,读到其它节点时length都与字符串值相同,这是为什么,请高手指点,急!!!!!!!!这里有部分代码,MASSMSID是第一个节点,可每次都要分两次读,最后MASSMSIDString的值就是后半部分了.
public void characters(char[] chars, int start, int length) throws SAXException {
//将元素内容累加到StringBuffer中
buf = new StringBuffer();
buf.append(chars, start, length);
System.out.println("length:"+length);
text = buf.toString();
if(MASSMSID){
MASSMSIDString = text;
}
if(GWSMSID){
GWSMSIDString = text;
}
if(SISMSID){
SISMSIDString = text;
}
if(EXTCODE){
EXTCODEString = text;
}
if(DESTADDR){
DESTADDRString = text;
}
if(MESSAGECONTENT){
MESSAGECONTENTString = text;
}
if(REQDELIVERYREPORT){
REQDELIVERYREPORTString = text;
}
String uri, String localName, String qName, Attributes atts每碰到一个Element,就会调用startElement,然后就可以取值,也可以去属性值
SAXParserFactory sf = SAXParserFactory.newInstance();
SAXParser sp = sf.newSAXParser();
MyXMLReader reader = new MyXMLReader();
sp.parse(new InputSource("data_10k.xml"), reader); MyXMLReader里面有startElement,startDocument等函数不知道你是怎么写的?