javaXML解析的俩种方法-----DOM-----SAX
来源:互联网 发布:网络写手水军做的坏事 编辑:程序博客网 时间:2024/05/22 14:22
第一种解析方法
----------------------------------------------------------------DOM解析方式----------------------------------------------------
public class DOMxml {List<Tv> list = new ArrayList<Tv>();public static void main(String[] args) throws Exception {// 创建一个DocumentBuilderFactory的对象DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();// 创建一个DocumentBuilder对象try {// 创建一个DocumentBuilder对象DocumentBuilder db = dbf.newDocumentBuilder();// 创建DocumentBuilder对象的parse方法加载xml文件Document document = db.parse("凤凰卫视.xml");// 获取所有Program节点的集合NodeList Programlist = document.getElementsByTagName("Program");// System.out.println(Programlist.getLength());// 遍历Tv tv = new Tv();for (int i = 0; i < Programlist.getLength(); i++) {Node node = Programlist.item(i);NodeList nodes = node.getChildNodes();for (int j = 0; j < nodes.getLength(); j++) {// 区分textnode以及element类型的nodeif (nodes.item(j).getNodeType() == Node.ELEMENT_NODE) {// Element child=(Element)nodes.item(j);// System.out.println(child.getTextContent());// 获取element的节点名Node node2 = nodes.item(j);// 获取节点名String nodeName = node2.getNodeName();System.out.print(nodeName + ":");// 获取节点值// String// nodeValue=node2.getFirstChild().getNodeValue();String nodeValue = node2.getTextContent();// tv.setPlayTime(nodeValue.substring(1));System.out.println(nodeValue);}}}} catch (Exception e) {e.printStackTrace();}/*DOMxml doMxml=new DOMxml();doMxml.load();*/}/*public void load() throws DocumentException{Tv tv = new Tv();InputStream is = this.getClass().getResourceAsStream("/"+"凤凰卫视.xml");Document doc = new SAXReader().read(is);Element rootElement = doc.getRootElement();Element mentElement=(Element)rootElement.elementIterator("ProgramList").next();for (Iterator<Element> ment=mentElement.elementIterator("Program"); ment.hasNext();) { Element next = ment.next(); System.out.println(next); String playtime=next.attributeValue("playTime"); String name=next.attributeValue("name"); String path=next.attributeValue("path"); System.out.println(name); System.out.println(path); System.out.println(playtime); tv.setPlayTime(playtime); tv.setName(name); tv.setPath(path);}*/}
-------------------------------------------------------第二种SAX解析------------------------------------------------------------------
SAXParserHandler类
public class SAXParserHandler extends DefaultHandler {int count =0;String value=null;Tv tv=null;private ArrayList<Tv>list=new ArrayList<Tv>();/** * 用来解析xml元素 */@Overridepublic void startElement(String uri, String localName, String qName,Attributes attributes) throws SAXException {// 调用DefaultHandler的startElement方法super.startElement(uri, localName, qName, attributes);if (qName.equals("Program")) {// 获取属性值count++;System.out.println("-------------开始遍历"+count+"的内容--------------");int length = attributes.getLength();// 获取对应节点的属性值String value = attributes.getValue("");}else if(!qName.equals("Program")&&!qName.equals("ProgramList")&&!qName.equals("typeB")){System.out.print("节点名为:"+qName);}}/** * 用来标识解析开始 */@Overridepublic void startDocument() throws SAXException {super.startDocument();System.out.println("--------------SAX解析开始---------------");}/** * 解析结束 */@Overridepublic void endDocument() throws SAXException {// TODO Auto-generated method stubsuper.endDocument();System.out.println("----------SAX解析结束---------------");}/** * 调用DefaultHandler的endElement方法 */@Overridepublic void endElement(String uri, String localName, String qName)throws SAXException {// TODO Auto-generated method stubsuper.endElement(uri, localName, qName);if (qName.equals("Program")) {//list.add(tv);System.out.println("-------结束遍历"+count+"的内容---------");}/*else if (qName.equals("playTime")) { tv.setPlayTime(value);}else if (qName.equals("name")) { tv.setName(value);}else if (qName.equals("path")) { tv.setPath(value);}*/}/** * 获取节点值 */@Overridepublic void characters(char[] ch, int start, int length)throws SAXException {// TODO Auto-generated method stubsuper.characters(ch, start, length);value = new String(ch, start, length);if (!value.trim().equals("")) {System.out.println("\t节点值为:"+value);}}public ArrayList<Tv> getList() {return list;}}-------------------main方法--------------------------------
public static void main(String[] args) {// 获取一个SAXParserFactory实例SAXParserFactory spf = SAXParserFactory.newInstance();//通过factory获取SAXParser实例try {SAXParser sp=spf.newSAXParser();//创建SAXParserHandler对象SAXParserHandler sph=new SAXParserHandler();sp.parse("凤凰卫视.xml",sph);//System.out.println("共有"+sph.getList().size());} catch (Exception e) {e.printStackTrace();}}
0 0
- javaXML解析的俩种方法-----DOM-----SAX
- 简单javaXML读取——DOM、SAX
- java解析xml文件的2种方法:sax,dom
- 两种解析XML文档的方法-----DOM和SAX
- 两种解析XML文档的方法---DOM和SAX
- 两种解析XML文档的方法---DOM和SAX
- 两种解析XML文档的方法---DOM和SAX
- 两种解析XML文档的方法---DOM和SAX
- 两种解析XML文档的方法---DOM和SAX
- 两种解析XML文档的方法---DOM和SAX
- XML数据解析的两种方法:SAX和DOM
- Java 解析xml的方法:DOM,SAX
- Dom和sax解析方法的区别
- Dom和sax解析方法的区别
- javaXML文件解析(一) SAX解析
- javaXML文件解析(三)DOM解析
- QT XML文档的解析 QXmlStreamReader, DOM,SAX 三种解析方法 简单示例
- 常用的JavaXML解析技术
- bzoj3160 万径人踪灭
- Word论文排版最全技法--转载
- 穷游女生说:在川藏线上搭车,可以看清男人的本质
- maven的配置
- 二叉树的层次遍历
- javaXML解析的俩种方法-----DOM-----SAX
- list C++
- UIView animateWithDuration 使用详解
- 自然语言处理(1)
- PHP date()获取系统时间不对怎么办?
- c++primer plus复合类型之共用体
- 判断文件是否存在
- HDU-1829 A Bug's Life。并查集构造,与POJ1709异曲同工!
- gitlab备份与恢复