xml解析集聚

本文介绍使用Java进行XML文件的解析与操作方法,包括创建、读取、修改XML文件的具体实现过程。通过JDOM与Dom4j两个库,演示了如何构建XML文档、解析XML内容、修改XML节点及保存修改后的文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

贴上几个xml解析的程序,以后好翻阅



package com.ibm.test;

import java.io.File;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;

public class JDomTest {
public static void main(String[] args) {
SAXBuilder saxBuilder = new SAXBuilder();
try {
Document doc = saxBuilder.build(new File("domdb.xml"));

// 首先创建好节点
Element eltDb = new Element("db");
Element eltDriver = new Element("driver");
Element eltUrl = new Element("url");
Element eltUser = new Element("user");
Element eltPassword = new Element("password");

// 设置节点的值
eltDriver.setText("com.mysql.jdbc.Driver");
eltUrl.setText("jdbc:mysql://localhost/mySql");
eltUser.setText("root");
eltPassword.setText("xlc");

// 添加到根节点
eltDb.addContent(eltDriver);
eltDb.addContent(eltUrl);
eltDb.addContent(eltUser);
eltDb.addContent(eltPassword);
// 根节点设置属性
eltDb.setAttribute("type", "mysql");

Element root = doc.getRootElement();//This will return the root element for this document
// root.removeChild("db");//删除节点
root.addContent(eltDb);// 增加节点

// 修改db节点中内容
root.getChild("db").getChild("user").setText("system");
root.getChild("db").getChild("password").setText("manager");

XMLOutputter xmlOut = new XMLOutputter();

// 设置XML格式
Format fmt = Format.getPrettyFormat();
fmt.setIndent(" ");
fmt.setEncoding("utf-8");

xmlOut.setFormat(fmt);
xmlOut.output(doc, System.out);
} catch (Exception e) {
e.printStackTrace();
}
}
}






package com.ibm.test;

import java.io.FileWriter;
import java.io.IOException;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;

/**
* 写入文件或输出
*
* @author xll
*
*/
public class Dom4jWrite {

public static void main(String[] args) {
Document doc = DocumentHelper.createDocument();

doc.addProcessingInstruction("xml-stylesheet",
"type='text/xsl' href='db.xsl'");
doc.addDocType("dbconfig", null, "db.dtd");

// Element root=DocumentHelper.createElement("dbconfig");
// doc.setRootElement(root);
Element root = doc.addElement("dbconfig");

Element eltDb = root.addElement("db");
Element eltDriver = eltDb.addElement("driver");
Element eltUrl = eltDb.addElement("url");
Element eltUser = eltDb.addElement("user");
Element eltPassword = eltDb.addElement("password");

eltDriver.setText("com.mysql.jdbc.Driver");
eltUrl.setText("jdbc:mysql://localhost/mySql");
eltUser.setText("root");
eltPassword.setText("xlc");
eltDb.addAttribute("type", "mysql");

try {
// 设置输出格式
OutputFormat outFmt = new OutputFormat(" ", true);
outFmt.setEncoding("UTF-8");

/**//*
* PrintWriter pw = new PrintWriter(System.out); doc.write(pw);
* pw.flush(); pw.close();
*/

// XMLWriter xmlWriter = new XMLWriter(System.out, outFmt);
XMLWriter xmlWriter = new XMLWriter(new FileWriter("db.xml"),
outFmt);
xmlWriter.write(doc);
xmlWriter.flush();
xmlWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}





package com.ibm.test;

import java.io.File;
import java.io.FileWriter;
import java.util.Iterator;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

public class Dom4jModify {
public Document modifyDocument(File inputXml) {
try {
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(inputXml);
document.addDocType("dbconfig", null, "db.dtd");
List list = document.content();

// Iterator iter = document.nodeIterator();
Iterator iter = list.iterator();

Element element = (Element) iter.next();
element.element("db").attribute("type").setValue("mysql");
element.element("db").element("url").setText(
"jdbc:mysql://localhost/mySql");
element.element("db").element("driver").setText(
"com.mysql.jdbc.Driver");
element.element("db").element("user").setText("root");
element.element("db").element("password").setText("xlc");

// 设置输出格式
OutputFormat outFmt = new OutputFormat(" ", true);
outFmt.setEncoding("UTF-8");

XMLWriter xmlWriter = new XMLWriter(new FileWriter(
"domdb-modified.xml"), outFmt);
xmlWriter.write(document);
xmlWriter.flush();
xmlWriter.close();
return document;
} catch (Exception e) {
System.out.println(e.getMessage());
return null;
}
}

public static void main(String[] args) throws Exception {
Dom4jModify dom4jParser = new Dom4jModify();
Document document = dom4jParser.modifyDocument(new File("domdb.xml"));

OutputFormat outFmt = new OutputFormat(" ", true);
outFmt.setEncoding("UTF-8");
XMLWriter xmlWriter = new XMLWriter(System.out, outFmt);
xmlWriter.write(document);
xmlWriter.flush();
xmlWriter.close();
}
}






package com.ibm.xml;


import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;
/**
* Jdom解析
* @author xll
*
*/
public class JdomXmlDocument implements XmlDocument{

public void createXml(String fileName) {
Document document;
Element root;
root=new Element("employees");
document=new Document(root);
Element employee=new Element("employee");
root.addContent(employee);
Element name=new Element("name");
name.setText("ddvip");
employee.addContent(name);
Element sex=new Element("sex");
sex.setText("m");
employee.addContent(sex);
Element age=new Element("age");
age.setText("23");
employee.addContent(age);
XMLOutputter XMLOut = new XMLOutputter();
try {
XMLOut.output(document, new FileOutputStream(fileName));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

@SuppressWarnings("unchecked")
public void parserXml(String fileName) {
SAXBuilder builder=new SAXBuilder(false);
try {
Document document=builder.build(fileName);
Element employees=document.getRootElement();
List employeeList=employees.getChildren("employee");
//System.out.println("employeeList.size()" + employeeList.size());
for(Iterator iter = employeeList.iterator();iter.hasNext();){
Element employee=(Element)iter.next();
List employeeInfo=employee.getChildren();
//System.out.println(employeeInfo.size());
for(int i = 0;i < employeeInfo.size();i++){
System.out.println(((Element)employeeInfo.get(i)).getName()+":"+((Element)employeeInfo.get(i)).getValue());
}
}
} catch (JDOMException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}






package com.ibm.xml;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.util.Iterator;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

/**
* Dom4j
*
* @author Administrator
*
*/
public class Dom4jXmlDocument implements XmlDocument {

public void createXml(String fileName) {
Document document = DocumentHelper.createDocument();
Element employees = document.addElement("employees");
Element employee = employees.addElement("employee");
Element name = employee.addElement("name");
name.setText("ddvip");
Element sex = employee.addElement("sex");
sex.setText("m");
Element age = employee.addElement("age");
age.setText("29");
try {
Writer fileWriter = new FileWriter(fileName);
XMLWriter xmlWriter = new XMLWriter(fileWriter);
xmlWriter.write(document);
xmlWriter.close();
} catch (IOException e) {
System.out.println(e.getMessage());
}
}

public void parserXml(String fileName) {
File inputXml = new File(fileName);
SAXReader saxReader = new SAXReader();
try {
Document document = saxReader.read(inputXml);
Element employees = document.getRootElement();
for (Iterator i = employees.elementIterator(); i.hasNext();) {
Element employee = (Element) i.next();
for (Iterator j = employee.elementIterator(); j.hasNext();) {
Element node = (Element) j.next();
System.out.println(node.getName() + ":" + node.getText());
}
}
} catch (DocumentException e) {
System.out.println(e.getMessage());
}
}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值