import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;public classXmlText {//private static Document parse;
public static voidmain(String[] args) throws Exception {//text();//add();//delete();//modfiy();
}/**
* 循环解析XML
*
* @throws ParserConfigurationException
* @throws SAXException
* @throws IOException*/
public static voidtext() throws ParserConfigurationException,
SAXException, IOException {//创建工厂
DocumentBuilderFactory factory =DocumentBuilderFactory.newInstance();//1.创建解析器对象
DocumentBuilder builder =factory.newDocumentBuilder();//2.创建文档对象
Document document = builder.parse("lbl/NewFile.xml");//3.拿到节点集合
NodeList list = document.getElementsByTagName("book");//4.遍历集合
for (int i = 0; i < list.getLength(); i++) {//拿到每个节点
Element item =(Element) list.item(i);//解析每个节点属性的值
String bookid = item.getAttribute("id");
String bookType= item.getAttribute("type");
System.out.println(bookid + "\t" +bookType);//解析每个节点的子节点的值
String bookName = item.getElementsByTagName("bookName").item(0)
.getTextContent();
String bookprice= item.getElementsByTagName("bookPrice").item(0)
.getTextContent();
String bookAuthor= item.getElementsByTagName("bookAuthor").item(0)
.getTextContent();
System.out.println(bookName + "\t" + bookprice + "\t" +bookAuthor);
}
}/**
* 添加节点
*
* @throws Exception*/
public static voidadd() throws Exception {//创建工厂
DocumentBuilderFactory newInstance =DocumentBuilderFactory
.newInstance();//创建解析器
DocumentBuilder newDocumentBuilder =newInstance.newDocumentBuilder();//创建文档对象
Document document = newDocumentBuilder.parse("lbl/NewFile.xml");//伪造节点
Element createElement = document.createElement("book");//给节点属性赋值
createElement.setAttribute("id", "004");
createElement.setAttribute("type", "动漫专题");//伪造节点的子节点
Element bookName = document.createElement("bookName");
bookName.setTextContent("樱桃小丸子");
Element bookPrice= document.createElement("bookPrice");
bookPrice.setTextContent("20");
Element bookAuthor= document.createElement("bookAuthor");
bookAuthor.setTextContent("无名");//将三个节点绑定到一个节点下。变成某一节点的子节点
createElement.appendChild(bookName);
createElement.appendChild(bookPrice);
createElement.appendChild(bookAuthor);//把新建的节点,添加到根节点下
document.getElementsByTagName("books").item(0)
.appendChild(createElement);//将修改后的文件,重写到硬盘
TransformerFactory transformerFactory =TransformerFactory
.newInstance();//创建转换器
Transformer transfromer =transformerFactory.newTransformer();//要传入的数据源
Source source = newDOMSource(document);//要传入的路径
Result result = new StreamResult("lbl/NewFile.xml");//转换方法
transfromer.transform(source, result);
System.out.println("add ok");
}/**
* 修改节点
*
* @throws Exception*/
public static voidmodfiy() throws Exception {//创建工厂
DocumentBuilderFactory newInstance =DocumentBuilderFactory
.newInstance();//创建解析器
DocumentBuilder newDocumentBuilder =newInstance.newDocumentBuilder();//创建文档对象
Document document = newDocumentBuilder.parse("lbl/NewFile.xml");//拿到要修改的节点
Element item = (Element) document.getElementsByTagName("book").item(1);
item.getElementsByTagName("bookName").item(0).setTextContent("我是测试xx");//将修改后的文件,重写到硬盘
TransformerFactory transformerFactory =TransformerFactory
.newInstance();//创建转换器
Transformer transfromer =transformerFactory.newTransformer();//要传入的数据源
Source source = newDOMSource(document);//要传入的路径
Result result = new StreamResult("lbl/NewFile.xml");//转换方法
transfromer.transform(source, result);
System.out.println("add ok");
}/**
* 删除节点
*
* @throws Exception*/
public static voiddelete() throws Exception {//创建工厂
DocumentBuilderFactory newInstance =DocumentBuilderFactory
.newInstance();//创建解析器
DocumentBuilder newDocumentBuilder =newInstance.newDocumentBuilder();//创建文档对象
Document document = newDocumentBuilder.parse("lbl/NewFile.xml");//拿到要删除的节点
Element item = (Element) document.getElementsByTagName("book").item(2);
document.getElementsByTagName("books").item(0).removeChild(item);//将修改后的文件,重写到硬盘
TransformerFactory transformerFactory =TransformerFactory
.newInstance();//创建转换器
Transformer transfromer =transformerFactory.newTransformer();//要传入的数据源
Source source = newDOMSource(document);//要传入的路径
Result result = new StreamResult("lbl/NewFile.xml");//转换方法
transfromer.transform(source, result);
System.out.println("delete ok");
}
}
复制代码
本文提供了一个Java程序示例,展示了如何读取、添加、修改和删除XML文件中的数据。通过具体的代码实现,读者可以了解使用Java进行XML文件操作的基本流程。
383

被折叠的 条评论
为什么被折叠?



