标签:XML xml document Element public import 解析 节点
DOM解析xml
节点:空白节点 文档节点 注释节点 元素节点 属性节点
package com.xml.dom;
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;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.FileOutputStream;
import java.io.IOException;
public class XMLParser {
private Document document;
public void getDocument(){
try {
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
document = documentBuilder.parse("src/main/resources/phone.xml");
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 解析xml内容
*/
public void show(){
NodeList brands = document.getElementsByTagName("Brand");
for (int i = 0; i < brands.getLength(); i++) {
Node node = brands.item(i); //节点:空白节点 文档节点 注释节点 元素节点 属性节点
Element element= (Element)node;
String brandName = element.getAttribute("name");
System.out.println(brandName);
NodeList types = node.getChildNodes();
for (int j = 0; j < types.getLength(); j++) {
Node typeNode = types.item(j);
if (typeNode.getNodeType()== Node.ELEMENT_NODE) {
Element typeElement= (Element)typeNode;
String typeName = typeElement.getAttribute("name");
System.out.println("\t"+typeName);
}
}
}
}
/**
* 添加节点
*/
public void add(){
Element brand = document.createElement("Brand");
brand.setAttribute("name","三星");
Element type = document.createElement("Type");
type.setAttribute("name","NoteX");
brand.appendChild(type);
document.getElementsByTagName("PhoneInfo").item(0).appendChild(brand);
}
/**
* 保存xml
*/
public void save(){
TransformerFactory transformerFactory = TransformerFactory.newInstance();
try {
Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.ENCODING,"UTF-8");
DOMSource domSource = new DOMSource(document);
StreamResult streamResult = new StreamResult(new FileOutputStream("src/main/resources/phone.xml"));
transformer.transform(domSource,streamResult);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 修改xml
*/
public void update(){
NodeList brands = document.getElementsByTagName("Brand");
for (int i = 0; i < brands.getLength(); i++) {
Element brand=(Element) brands.item(i);
String value = brand.getAttribute("name");
if("三星".equals(value)){
brand.setAttribute("name","SAMSUNG");
}
}
}
/**
* 删除节点
*/
public void delete(){
NodeList brands = document.getElementsByTagName("Brand");
for (int i = 0; i < brands.getLength(); i++) {
Element brand=(Element) brands.item(i);
String value = brand.getAttribute("name");
if("SAMSUNG".equals(value)){
brand.getParentNode().removeChild(brand);
}
}
}
public static void main(String[] args) {
XMLParser xmlParser = new XMLParser();
xmlParser.getDocument();
//xmlParser.add();
//xmlParser.update();
xmlParser.delete();
xmlParser.save();
//xmlParser.show();
}
}
DOM4j解析xml
package com;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.net.URL;
import java.util.List;
public class Parser {
private Document document;
/**
* 加载DOM树
*/
public void getDocument(){
try {
SAXReader saxReader=new SAXReader();
//获取xml文件路径
URL url=Parser.class.getClassLoader().getResource("phone.xml");
System.out.println(url);
document= saxReader.read(url);
} catch (Exception e) {
e.printStackTrace();
}
}
public void show(){
//获取XML根节点
Element rootElement=document.getRootElement();
//通过根节点获取子节点
List<Element> elements=rootElement.elements();
//循环读取节点内容
for (Element brandElement:elements){
String brandName=brandElement.attributeValue("name");
System.out.println(brandName);
List<Element> typeElements=brandElement.elements();
for (Element typeElement:typeElements){
String typeName=typeElement.attributeValue("name");
System.out.println(typeName);
}
}
}
//添加节点
public void add(){
Element rootElement=document.getRootElement();
Element brandElement=rootElement.addElement("Brand");
brandElement.addAttribute("name","三星");
Element typeElement=brandElement.addElement("Type");
typeElement.addAttribute("name","NoteX");
}
//修改节点
public void Update(){
Element rootElement=document.getRootElement();
List<Element> elements = rootElement.elements();
for (Element element:elements){
String brandName=element.attributeValue("name");
if("三星".equals(brandName)){
element.addAttribute("三星","SAMSUNG");
}
}
}
//删除节点
public void delete(){
Element rootElement = document.getRootElement();
List<Element> elements = rootElement.elements();
for (Element element : elements) {
String brandName = element.attributeValue("name");
if("SAMSUNG".equals(brandName)){
rootElement.remove(element);
}
}
}
//对节点操作需保存操作
public void save(){
OutputFormat outputFormat = OutputFormat.createPrettyPrint();
outputFormat.setEncoding("utf-8");
try {
XMLWriter xmlWriter = new XMLWriter(new FileWriter("src/main/resources/phone.xml"),outputFormat);
xmlWriter.write(document);
xmlWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
Parser xmlParser=new Parser();
xmlParser.getDocument();
// xmlParser.show();
xmlParser.add();
// xmlParser.Update();
// xmlParser.delete();
//操作完记得保存
xmlParser.save();
}
}
标签:XML,xml,document,Element,public,import,解析,节点 来源: https://blog.csdn.net/qq_51001054/article/details/118609060
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。