DOM4J解析XML文件
package test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
public class Dom4jTest {
/**
* 通过dom4j解析xml文件 2015-10-28 Joy
*
*/
public void parserXML() {
// 创建DOM4J中的saxReader对象
SAXReader saxReader = new SAXReader();
try {
// 利用read方法加载book.xml文件,同时获取document对象,并且利用字符转换流设置编码为utf-8
File file = new File("src/source/book.xml");
Document document = saxReader.read(new InputStreamReader(
new FileInputStream(file), "utf-8"));
// 通过document对象的getRootElement()方法获取到根节点
Element rootElement = document.getRootElement();
// 获取迭代器
Iterator it = rootElement.elementIterator();
// 循环迭代器
while (it.hasNext()) {
// 迭代下一个节点
Element bookElement = (Element) it.next();
// 输出节点的名字
System.out.print(bookElement.getName());
// 获取节点的属性集合
List<Attribute> attrList = bookElement.attributes();
// 输出节点的属性名和属性值
for (Attribute attr : attrList) {
System.out.println(attr.getName() + ":" + attr.getValue());
}
// 通过属性名去获取属性值
System.out.println(bookElement.attribute("id").getValue()
+ "\n" + "\n\n");
// 获取子节点
Iterator its = bookElement.elementIterator();
while (its.hasNext()) {
Element element = (Element) its.next();
System.out.println(element.getName() + ":"
+ element.getText());
}
}
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 通过dom4j创建xml文件 2015-10-28 Joy
*
*/
public void createXML() {
//创建document对象,代表整个xml文档
Document document = DocumentHelper.createDocument();
//创建跟节点
Element element = document.addElement("root");
//为跟节点设置属性以及属性值
element.addAttribute("version", "1.0");
//创建根节点的孩子
Element child1 = element.addElement("child1");
//给子节点设置text值
child1.setText("<第一个熊孩子>");
child1.addAttribute("name", "1");
Element child2 = element.addElement("child1");
child2.setText("<第二个熊孩子>");
child2.addAttribute("name", "2");
//文件名、文件位置
File file = new File("src/source/bookdom4j.xml");
//格式化
OutputFormat format = OutputFormat.createPrettyPrint();
//设置xml文件的编码方式
format.setEncoding("GBK");
try {
//写出document
XMLWriter writer = new XMLWriter(new FileOutputStream(file),format);
//对文档进行转义,默然情况下是true表示转义
writer.setEscapeText(false);
writer.write(document);
writer.close();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
Dom4jTest test = new Dom4jTest();
test.createXML();
}
}
dom解析xml文件
package test;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
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.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
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.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
public class DomTest {
/**
* 解析xml 2015-10-27 Joy
*
*/
public void parserXML() {
// 创建documentBuilderFactory对象
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
// 利用documentBuilderFactory创建documentBuilder对象
DocumentBuilder builder;
try {
builder = factory.newDocumentBuilder();
// 通过builder对象的parse方法加载文件并且创建document对象
Document document = builder.parse(new FileInputStream(
"src/source/book.xml"));
// 获取book节点,返回nodelist集合
NodeList nodeList = document.getElementsByTagName("book");
// 循环nodelist集合
for (int i = 0; i < nodeList.getLength(); i++) {
// 获取node节点
Node node = nodeList.item(i);
// 获取node节点的属性
NamedNodeMap attrs = node.getAttributes();
// 循环输出属性名和属性值
for (int j = 0; j < attrs.getLength(); j++) {
Node map = attrs.item(j);
System.out.println(map.getNodeName() + ":"
+ map.getNodeValue());
}
// 获取子节点
NodeList chilList = node.getChildNodes();
for (int j = 0; j < chilList.getLength(); j++) {
Node chil = chilList.item(j);
// 判断node类型为非text类型的
if (chil.getNodeType() == Node.ELEMENT_NODE) {
System.out.println(chil.getNodeName() + ":"
+ chil.getFirstChild().getNodeValue());
}
}
System.out.println();
}
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 生成xml 2015-10-27 Joy
*
*/
public void crateXML() {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder;
try {
builder = factory.newDocumentBuilder();
Document document =builder.newDocument();
//创建根节点
Element element = document.createElement("books");
//根节点添加属性
element.setAttribute("id", "one");
//创建子节点 book
Element chilElement = document.createElement("book");
//子节点添加属性id
chilElement.setAttribute("id", "1");
//创建name节点,将name节点添加到book节点下
Element chil1 = document.createElement("name");
//给nama节点添加text值
chil1.setTextContent("冰月创奇");
chilElement.appendChild(chil1);
//将子节点添加到根节点中
element.appendChild(chilElement);
document.appendChild(element);
//创建TransformerFactory 对象
TransformerFactory tranformerFactory = TransformerFactory.newInstance();
try {
//创建transformer对象
Transformer transformer = tranformerFactory.newTransformer();
//设置xml文件自动换行
transformer.setOutputProperty(OutputKeys.INDENT, "YES");
//将dom树转换成xml文件
transformer.transform(new DOMSource(document), new StreamResult(new File("src/source/book11.xml")));
} catch (TransformerConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TransformerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (ParserConfigurationException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
DomTest test = new DomTest();
test.crateXML();
}
}
dom解析xml文件
package test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import org.jdom.Attribute;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;
import com.sun.xml.internal.ws.message.RootElementSniffer;
import com.sun.xml.internal.ws.util.xml.CDATA;
import entity.Books;
public class JDOMTest {
/**
* 利用JDOM解析XML文件 2015-10-26 Joy
*
*/
public void getXmlInfo() {
// 创建洒下builder对象
SAXBuilder saxBuilder = new SAXBuilder();
FileInputStream in;
try {
// 创建输入流
in = new FileInputStream("src/source/book.xml");
// 利用转换流将字节流fileinputstream转换成utf-8格式的字节流 ,解决乱码问题
InputStreamReader isr = new InputStreamReader(in, "utf-8");
// 加载流中的数据
Document document = saxBuilder.build(isr);
// 获取根借点 books
Element element = document.getRootElement();
// 获取根节点下的子节点 book
List<Element> chilList = element.getChildren();
for (Element childer : chilList) {
// 获取解析的book书位置,(第几本书)
System.out.println("解析第" + (chilList.indexOf(childer) + 1)
+ "本书");
// 知道属性名为id获取属性值;
System.out.println("id的属性:"
+ childer.getAttribute("id").getValue());
// 不知道属性名,获取属性名和属性值
List<Attribute> attrList = childer.getAttributes();
for (Attribute attr : attrList) {
System.out.println("属性名:" + attr.getName());
System.out.println("属性值:" + attr.getValue());
}
// 获取book下的子节点
List<Element> childerList = childer.getChildren();
for (Element chil : childerList) {
System.out.println(chil.getName() + ":" + chil.getValue());
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (JDOMException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 利用jdom解析xml,并将信息放入到books对象中
* 2015-10-26
* Joy
*
*/
public void getXmlInofToENntity() {
List<Books> booksList = new ArrayList<Books>();
SAXBuilder saxBuilder = new SAXBuilder();
InputStream is;
try {
is = new FileInputStream("src/source/book.xml");
InputStreamReader isr = new InputStreamReader(is, "utf-8");
Document document = saxBuilder.build(isr);
Element root = document.getRootElement();
List<Element> elementList = root.getChildren();
for (Element element : elementList) {
// System.out.println(elementList.indexOf(element)+1);
Books book = new Books();
book.setId(element.getAttribute("id").getValue());
List<Element> chilList = element.getChildren();
for (Element chil : chilList) {
String elementName = chil.getName();
// System.out.println(elementName);
if (elementName.equals("name")) {
book.setName(chil.getValue());
}
if (elementName.equals("author")) {
book.setAuthor(chil.getValue());
}
if (elementName.equals("year")) {
book.setYear(chil.getValue());
}
if (elementName.equals("price")) {
book.setPrice(chil.getValue());
}
if (elementName.equals("language")) {
book.setLanguage(chil.getValue());
}
}
booksList.add(book);
book = null;
}
for (Books book1 : booksList) {
System.out.println(book1.getName() + "," + book1.getAuthor()
+ "," + book1.getLanguage() + "," + book1.getPrice()
+ "," + book1.getYear());
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JDOMException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
*创建xml文件
*
*/
public void createXML(){
Element rootElement = new Element("root");
rootElement.setAttribute("version", "2.0");
Document document = new Document(rootElement);
Element element = new Element("child");
element.setText("孩子");
rootElement.addContent(element);
Element elementChild = new Element("childer");
elementChild.setText("<孙子>");
element.addContent(elementChild);
Format format = Format.getCompactFormat();
format.setIndent("");
format.setExpandEmptyElements(true);
XMLOutputter output = new XMLOutputter(format);
try {
output.output(document, new FileOutputStream(new File("src/source/jdom.xml")));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
JDOMTest test = new JDOMTest();
//test.getXmlInofToENntity();
test.createXML();
}
}