加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

xml解析

发布时间:2020-12-16 05:43:46 所属栏目:百科 来源:网络整理
导读:xml解析 1、Dom解析http://www.cnblogs.com/shenliang123/archive/2012/05/11/2495252.html //得到DOM解析器的工厂实例DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance();//从DOM工厂中获得DOM解析器DocumentBuilderbuilder=factory.newD

xml解析

1、Dom解析http://www.cnblogs.com/shenliang123/archive/2012/05/11/2495252.html

//得到DOM解析器的工厂实例DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance();//从DOM工厂中获得DOM解析器DocumentBuilderbuilder=factory.newDocumentBuilder();//通过DocumentBuilder的parse方法获得一个文档对象//Documentdoc=builder.parse(InputStream);Documentdoc=builder.parse(".xml");//得到根节点Elementroot=doc.getDocumentElement();//得到root节点内名称为student的元素的节点列表NodeListnodeList=root.getElementsByTagName("student");//遍历该集合,从集合中取出信息。。。//一些常用方法Nodenode=list.item(i);//取出列表中内的一个节点node.getNodeType()//获得节点类型node.getNodeName()//获得该节点名称node.getFirstChild()//获得该节点的第一个子节点node.getNodeValue())//获得该节点的值node.getAttribute("")//通过名称获得属性值



2、SAX解析http://www.cnblogs.com/felix-hua/archive/2012/01/10/2317404.html

//新建一个工厂类SAXParserFactorySAXParserFactoryfactory=SAXParserFactory.newInstance();//让工厂类产生一个SAX的解析类SAXParserSAXParserparser=factory.newSAXParser();//使用SAXParser的parser方法传入xml流和自定义的Handeler,解析开始parser.parse(is,newMyHandeler);//自定义Handeler:classMyHandlerextendsDefaultHandler{//当解析文档开始时回调此方法startDocument()
//当解析文档结束时回调此方法endDocument()

//当解析到一个元素开始时回调此方法startElement(Stringuri,StringlocalName,StringqName,Attributesattributes){//localName不带命名空间qName带命名空间
attributes.get(StringattrID)//获得名称为attrID的属性值
}//当解析到一个元素结束时回调此方法endElement(Stringuri,StringqName)

//当解析到元素的内容时回调此方法
characters(char[]ch,intstart,intlength)

}


3、Pull解析

//新建一个XmlPullParserFactory工厂类XmlPullParserFactoryfactory=XmlPullParserFactory.newInstance();//新建一个XmlPullParser解析器XmlPullParserparser=factory.newPullParser();//使用XmlPullParser的setInput方法设置要解析的xml流和编码parser.setInput(XmlPullParser,"utf-8");intevent=parser.getEventType();//产生第一个事件while(event!=XmlPullParser.END_DOCUMENT){
switch(event){
caseXmlPullParser.START_DOCUMENT://判断当前事件是否是文档开始事件
books=newArrayList<Book>();//初始化books集合
break;
caseXmlPullParser.START_TAG://判断当前事件是否是标签元素开始事件
if("book".equals(parser.getName())){//判断开始标签元素是否是book
book=newBook();
book.setId(Integer.parseInt(parser.getAttributeValue(0)));//得到book标签的属性值,并设置book的id}
if(book!=null){
if("name".equals(parser.getName())){//判断开始标签元素是否是namebook.setName(parser.nextText());
}elseif("price".equals(parser.getName())){//判断开始标签元素是否是pricebook.setPrice(Float.parseFloat(parser.nextText()));
}
}
break;
caseXmlPullParser.END_TAG://判断当前事件是否是标签元素结束事件
if("book".equals(parser.getName())){//判断结束标签元素是否是book
books.add(book);//将book添加到books集合
book=null;
}
break;
}
event=parser.next();//进入下一个元素并触发相应事件}returnbooks;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读