java学习笔记--解析xml
2017-03-10 21:59
423 查看
java解析xml有多种方式,这里主要记录一下DOM解析和DOM4j解析
首先我们准备一个简单的xml文件
DOM解析是java中自带的解析方式,主要实现代码如下
DOM4j解析不是java中自带的解析方式,需要外部导入jar包
首先我们准备一个简单的xml文件
<?xml version="1.0" encoding="UTF-8"?> <bookstore> <book id="1"> <name>三体</name> <author>刘慈欣</author> <price>70</price> </book> <book id="2"> <name>红楼梦</name> <author>曹雪芹</author> <language>中文</language> </book> </bookstore>
DOM解析
DOM解析是java中自带的解析方式,主要实现代码如下
import org.w3c.dom.Document; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import java.io.IOException; /** * Created by lenovo1 on 2017-03-10. */ public class DOMTest { public static void main(String[] args) { //创建一个DocumentBuilderFactory对象 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); //创建一个DocumentBuilder对象 try { //创建DocumentBuilder对象 DocumentBuilder db = dbf.newDocumentBuilder(); //通过DocumentBuilder对象的parse方法加载books.xml文件到当前项目下 Document document = db.parse("books.xml"); //获取所有book结点的集合 NodeList bookList = document.getElementsByTagName("book"); //遍历每一个book节点 for (int i =0;i<bookList.getLength();i++) { //通过item(i)方法 获取一个book节点,nodeList的索引值从0开始 Node book = bookList.item(i); //获取book节点的所有属性集合 NamedNodeMap attrs = book.getAttributes(); //遍历book的属性 for (int j=0;j<attrs.getLength();j++) { //通过item(index)方法获取book节点的某一个属性 Node attr = attrs.item(j); //获取属性名 System.out.print("属性名:" + attr.getNodeName()); //获取属性值 System.out.println("--属性值" + attr.getNodeValue()); } //解析book节点的子节点 NodeList childNodes = book.getChildNodes(); //遍历childNodes获取每个节点的节点名和节点值 for (int k = 0; k < childNodes.getLength(); k++) { //区分出text类型的node以及element类型的node if (childNodes.item(k).getNodeType() == Node.ELEMENT_NODE) { //获取了element类型节点的节点名 System.out.print("节点名:"+ childNodes.item(k).getNodeName()); System.out.println("--节点值是:" + childNodes.item(k).getTextContent()); } } } } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
DOM4j解析
DOM4j解析不是java中自带的解析方式,需要外部导入jar包
import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; import java.io.File; import java.util.ArrayList; import java.util.Iterator; import java.util.List; /** * Created by lenovo1 on 2017-03-10. */ public class DOM4jTest { private static ArrayList<Book> bookList = new ArrayList<Book>(); public static void main(String[] args) { // 创建SAXReader的对象reader SAXReader reader = new SAXReader(); try { Document document = reader.read(new File("books.xml")); Element bookStore = document.getRootElement(); Iterator it = bookStore.elementIterator(); while (it.hasNext()) { System.out.println("=====开始遍历某一本书====="); Element book = (Element) it.next(); // 获取book的属性名以及 属性值 List<Attribute> bookAttrs = book.attributes(); for (Attribute attr : bookAttrs) { System.out.println("属性名:" + attr.getName() + "--属性值:" + attr.getValue()); } Iterator itt = book.elementIterator(); while (itt.hasNext()) { Element bookChild = (Element) itt.next(); System.out.println("节点名:" + bookChild.getName() + "--节点值:" + bookChild.getStringValue()); } System.out.println("=====结束遍历某一本书====="); } } catch (DocumentException e) { e.printStackTrace(); } } }
相关文章推荐
- java学习笔记:使用dom4j解析xml
- java学习笔记:使用dom4j解析xml
- 【JAVA WEB】学习笔记——XML解析
- Java学习笔记(2)----Web项目中解析XML文件
- java xml解析 学习笔记(3)——JDOM
- java xml解析 学习笔记(2)——SAX
- JavaWEB.xml解析技术SAX&DOM(学习笔记)
- DOM4J学习笔记 --- Java简单解析XML数据
- JAVA学习笔记_XML解析及XPath表达式
- DOM4J学习笔记 --- Java遍历解析XML
- java学习笔记——使用DOM解析XML和使用SAX解析XML
- Java学习笔记--xml构造与解析之Sax的使用
- java xml解析 学习笔记(4)——DOM4J
- java xml解析 学习笔记(1)——DOM
- Java之SAX 方式解析 XML(学习笔记)
- xml学习笔记(3)xml解析方式
- Java学习之路——用dom4j解析xml
- python网络编程学习笔记(8):XML生成与解析(DOM、ElementTree)
- pull解析xml学习笔记
- haXe学习笔记:xml的解析