利用DOM解析和创建xml文件

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/moonhelena/article/details/51974110

XML解析器是指可以解析XML文件的程序

常见解析器有

1.     SAX解析器,用于XML的简单API

2.     DOM解析器,文档对象模型

文档对象模型就是利用对象来把文档模型化,这些模型不仅描述了文档的结构,还定义了模型中对象的行为。在DOM中,对象模型要实现:

a.     用来表示、操作文档的接口

b.     接口的行为和属性

c.      接口之间的关系和互操作。

在DOM接口规范中,有四个最基本的接口:Document,Node,NodeList,以及NamedNodeMap.

其中:一切都是节点(对象)

Node对象:DOM中最基本的对象

Document对象:代表整个XML文档

NodeList对象包含一个或者是多个Node的列表

Element对象代表xml文档中的标签元素

如何读取xml文件?

1.建立一个解析器工厂

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

2.以利用这个工厂来获得一个具体的解析器对象

DocumentBuilder builder= factory.newDocumentBuilder();

3.     利用DocumentBuilder中的parse()方法接收一个xml文档名作为输入参数,返回一个Document对象。Document对象代表了一个XML文档的树模型

Document doc = builder.parse(“book.xml”)

4.     使用Document对象的getElementByTagName()方法,得到一个NodeList对象,它是XML文档中的标签元素列表,可以使用NodeList对象的item()方法得到列表中每个Node对象

NodeList nodelist = doc.getElementsByTagName(“book”);

Element node =(Element) nodelist.item(i);

5.     通过Node对象的getNodeValue()方法提取某个标签内的内容

Node.getElementsByTagName(“name”).item(0).getFirstChild().getNodeValue();

利用DOM,如何创建一个xml文件?

//创建一个解析器工厂对象

DocumentBuilderFactory  factory =DocumentBuilderFactory.newInstance();

//创建一个具体的解析器对象

DocumentBuilder builder =factory.newDocumentBuilder();

//创建一个document文档对象

Document document = builder.newDocument();

        

Element root =document.createElement("books");

Element book =document.createElement("book");

Element bname =document.createElement("bname");

bname.setTextContent("梦想");

Element author =document.createElement("author");

author.setTextContent("小");

Element price =document.createElement("price");

price.setTextContent("30");

Attr id =document.createAttribute("id");

id.setValue("book_001");

book.setAttributeNode(id);

root.appendChild(book);

book.appendChild(bname);

book.appendChild(author);

book.appendChild(price);

document.appendChild(root);

                 

//创建xml文件转换器

TransformerFactory transfactory =TransformerFactory.newInstance();

Transformer transformer =transfactory.newTransformer();

//设置输出编码

transformer.setOutputProperty("encoding","utf-8");

//定义转换器输入对象

DOMSource source = new DOMSource(document);

//定义转换器输出对象

Result target = newStreamResult("books.xml");

transformer.transform(source, target);

展开阅读全文
博主设置当前文章不允许评论。

没有更多推荐了,返回首页