一.解析xml
1.xml格式如下:
<?xml version="1.0" encoding="UTF-8"?>
<person>
<p>
<name>jack</name>
<age>15</age>
</p>
<p>
<name>mario</name>
<age>14</age>
</p>
<p>
<name>jane</name>
<age>16</age>
</p>
</person>
2.java解析代码如下
package com.hf.jaxp;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class JaxpDemo {
public static void main(String[] args) throws Exception {
//1.创建解析器工厂;
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
//2.创建解析器;
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
//3.使用parse方法得到document对象;
Document document = documentBuilder.parse("src/person.xml");
//4.使用document对象的getElementsByTagName方法得到name节点,返回NodeList;
NodeList nodeList = document.getElementsByTagName("name");
//遍历NodeList;
for(int i=0;i<nodeList.getLength();i++)
{
//NodeList对象的item方法返回值为Node对象;
Node nameNode = nodeList.item(i);
//使用node对象的getTextContent()方法可以获取其文本内容;
String name = nameNode.getTextContent();
System.out.println(name);
}
}
}
3.运行结果
jack
mario
jane
二.编辑xml
1.增加标签
public static void addAttribute() throws Exception
{
//1.创建解析器工厂
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
//2.创建解析器
DocumentBuilder db = dbf.newDocumentBuilder();
//2.解析xml文件,得到document对象
Document dt = db.parse("src/person.xml");
//4.得到第一个P标签
Node firstP = dt.getElementsByTagName("p").item(0);
//5.创建一个新的标签<sex>
Element sexNode = dt.createElement("sex");
//6.创建sex标签的文本内容对象
Text textNode = dt.createTextNode("man");
//7.将文本节点添加到标签sex中
sexNode.appendChild(textNode);
//8.将sex标签添加到第一个p标签中
firstP.appendChild(sexNode);
//回写xml,将内存中的数据写入文件
//创建transformer工厂
TransformerFactory transformerFactory = TransformerFactory.newInstance();
//创建transformer
Transformer transform = transformerFactory.newTransformer();
//写入
transform.transform(new DOMSource(dt), new StreamResult("src/person.xml"));
System.out.println("Success");
}
网友评论