java 解析xml文件样例
2009-04-20 16:17
260 查看
最近需要用到java解析xml文件,在网上找了些资料,然后封装了个xmlFileUtil类,现在和大家分享下:
xml文件样例:<?xml version="1.0" encoding="UTF-8"?><xml-body><cardcode><name>name</name><value>value</value></cardcode></xml-body>
xmlFileUtil类:
package rosten;
import org.w3c.dom.*;
import javax.xml.parsers.*;
import java.io.*;
import java.util.ArrayList;
public class XMLFileUtil {
// Document可以看作是XML在内存中的一个镜像,那么一旦获取这个Document 就意味着可以通过对
// 内存的操作来实现对XML的操作,首先第一步获取XML相关的Document
private Document xmlDoc;
private Element root;
public void LoadXmlFile(String filePath) throws Exception {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
// 这个Document就是一个XML文件在内存中的镜像
this.setXmlDoc(db.parse(new File(filePath)));
this.setXmlElement(this.getXmlDoc().getDocumentElement());
}
@SuppressWarnings("unchecked")
// 通过属性名获取elemntes 样例:<code name="codeName"> return 为:codeName
public Element[] getElementsByName(Element parent, String name) {
ArrayList resList = new ArrayList();
NodeList nl = getNodeList(parent);
for (int i = 0; i < nl.getLength(); i++) {
Node nd = nl.item(i);
if (nd.getNodeName().equals(name)) {
resList.add(nd);
}
}
Element[] res = new Element[resList.size()];
for (int i = 0; i < resList.size(); i++) {
res[0] = (Element) resList.get(i);
}
return res;
}
// 获取element下面所有的子节点
public NodeList getNodeList(Element parent) {
return parent.getChildNodes();
}
// 获取elements的名称<code></code>return为:code
public String getElementName(Element element) {
return element.getNodeName();
}
public String getElementValueByName(Node node, String name) {
for(Node nd =node.getFirstChild();nd!=null;nd=nd.getNextSibling()){
if(nd.getNodeType()==Node.ELEMENT_NODE){
if(nd.getNodeName().equals(name)){
return nd.getFirstChild().getNodeValue();
}
}
}
return null;
}
// 获取element值<code>aa</code> return为:aa
public String getElementValue(Element element) {
NodeList nl = element.getChildNodes();
for (int i = 0; i < nl.getLength(); i++) {
if (nl.item(i).getNodeType() == Node.TEXT_NODE)// 是一个Text Node
{
return element.getFirstChild().getNodeValue();
}
}
return null;
}
public String getElementAttr(Element element, String attr) {
return element.getAttribute(attr);
}
public void setElementValue(Element element, String val) {
Node node = element.getOwnerDocument().createTextNode(val);
NodeList nl = element.getChildNodes();
for (int i = 0; i < nl.getLength(); i++) {
Node nd = nl.item(i);
if (nd.getNodeType() == Node.TEXT_NODE)// 是一个Text Node
{
nd.setNodeValue(val);
return;
}
}
element.appendChild(node);
}
public void setElementAttr(Element element, String attr,
String attrVal) {
element.setAttribute(attr, attrVal);
}
public static void addElement(Element parent, Element child) {
parent.appendChild(child);
}
public void addElement(Element parent, String tagName) {
Document doc = parent.getOwnerDocument();
Element child = doc.createElement(tagName);
parent.appendChild(child);
}
public void addElement(Element parent, String tagName, String text) {
Document doc = parent.getOwnerDocument();
Element child = doc.createElement(tagName);
setElementValue(child, text);
parent.appendChild(child);
}
public void removeElement(Element parent, String tagName) {
NodeList nl = parent.getChildNodes();
for (int i = 0; i < nl.getLength(); i++) {
Node nd = nl.item(i);
if (nd.getNodeName().equals(tagName)) {
parent.removeChild(nd);
}
}
}
public void setXmlDoc(Document xmlDoc) {
this.xmlDoc = xmlDoc;
}
public Document getXmlDoc() {
return xmlDoc;
}
public void setXmlElement(Element xmlElement) {
this.root = xmlElement;
}
public Element getXmlElement() {
return root;
}
}
使用方法:
package rosten;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class praseXml01 {
/**
* @param args
*/
public static void main(String[] args) {
XMLFileUtil xmlDeal = new XMLFileUtil();
try {
xmlDeal.LoadXmlFile("d:/MyXml.xml");
NodeList allNode = xmlDeal.getNodeList(xmlDeal.getXmlElement());
if(allNode==null){
System.out.println("xml文件中不包含任何信息.....");
return;
}
for(int i=0;i<allNode.getLength();i++){
Node node = allNode.item(i);
if(node.getNodeType()==Node.ELEMENT_NODE){
if(xmlDeal.getElementValueByName(node, "name")!=null){
System.out.println("name:" + xmlDeal.getElementValueByName(node, "name"));
}
if(xmlDeal.getElementValueByName(node, "value")!=null){
System.out.println("value :" +xmlDeal.getElementValueByName(node, "value"));
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
xml文件样例:<?xml version="1.0" encoding="UTF-8"?><xml-body><cardcode><name>name</name><value>value</value></cardcode></xml-body>
xmlFileUtil类:
package rosten;
import org.w3c.dom.*;
import javax.xml.parsers.*;
import java.io.*;
import java.util.ArrayList;
public class XMLFileUtil {
// Document可以看作是XML在内存中的一个镜像,那么一旦获取这个Document 就意味着可以通过对
// 内存的操作来实现对XML的操作,首先第一步获取XML相关的Document
private Document xmlDoc;
private Element root;
public void LoadXmlFile(String filePath) throws Exception {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
// 这个Document就是一个XML文件在内存中的镜像
this.setXmlDoc(db.parse(new File(filePath)));
this.setXmlElement(this.getXmlDoc().getDocumentElement());
}
@SuppressWarnings("unchecked")
// 通过属性名获取elemntes 样例:<code name="codeName"> return 为:codeName
public Element[] getElementsByName(Element parent, String name) {
ArrayList resList = new ArrayList();
NodeList nl = getNodeList(parent);
for (int i = 0; i < nl.getLength(); i++) {
Node nd = nl.item(i);
if (nd.getNodeName().equals(name)) {
resList.add(nd);
}
}
Element[] res = new Element[resList.size()];
for (int i = 0; i < resList.size(); i++) {
res[0] = (Element) resList.get(i);
}
return res;
}
// 获取element下面所有的子节点
public NodeList getNodeList(Element parent) {
return parent.getChildNodes();
}
// 获取elements的名称<code></code>return为:code
public String getElementName(Element element) {
return element.getNodeName();
}
public String getElementValueByName(Node node, String name) {
for(Node nd =node.getFirstChild();nd!=null;nd=nd.getNextSibling()){
if(nd.getNodeType()==Node.ELEMENT_NODE){
if(nd.getNodeName().equals(name)){
return nd.getFirstChild().getNodeValue();
}
}
}
return null;
}
// 获取element值<code>aa</code> return为:aa
public String getElementValue(Element element) {
NodeList nl = element.getChildNodes();
for (int i = 0; i < nl.getLength(); i++) {
if (nl.item(i).getNodeType() == Node.TEXT_NODE)// 是一个Text Node
{
return element.getFirstChild().getNodeValue();
}
}
return null;
}
public String getElementAttr(Element element, String attr) {
return element.getAttribute(attr);
}
public void setElementValue(Element element, String val) {
Node node = element.getOwnerDocument().createTextNode(val);
NodeList nl = element.getChildNodes();
for (int i = 0; i < nl.getLength(); i++) {
Node nd = nl.item(i);
if (nd.getNodeType() == Node.TEXT_NODE)// 是一个Text Node
{
nd.setNodeValue(val);
return;
}
}
element.appendChild(node);
}
public void setElementAttr(Element element, String attr,
String attrVal) {
element.setAttribute(attr, attrVal);
}
public static void addElement(Element parent, Element child) {
parent.appendChild(child);
}
public void addElement(Element parent, String tagName) {
Document doc = parent.getOwnerDocument();
Element child = doc.createElement(tagName);
parent.appendChild(child);
}
public void addElement(Element parent, String tagName, String text) {
Document doc = parent.getOwnerDocument();
Element child = doc.createElement(tagName);
setElementValue(child, text);
parent.appendChild(child);
}
public void removeElement(Element parent, String tagName) {
NodeList nl = parent.getChildNodes();
for (int i = 0; i < nl.getLength(); i++) {
Node nd = nl.item(i);
if (nd.getNodeName().equals(tagName)) {
parent.removeChild(nd);
}
}
}
public void setXmlDoc(Document xmlDoc) {
this.xmlDoc = xmlDoc;
}
public Document getXmlDoc() {
return xmlDoc;
}
public void setXmlElement(Element xmlElement) {
this.root = xmlElement;
}
public Element getXmlElement() {
return root;
}
}
使用方法:
package rosten;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class praseXml01 {
/**
* @param args
*/
public static void main(String[] args) {
XMLFileUtil xmlDeal = new XMLFileUtil();
try {
xmlDeal.LoadXmlFile("d:/MyXml.xml");
NodeList allNode = xmlDeal.getNodeList(xmlDeal.getXmlElement());
if(allNode==null){
System.out.println("xml文件中不包含任何信息.....");
return;
}
for(int i=0;i<allNode.getLength();i++){
Node node = allNode.item(i);
if(node.getNodeType()==Node.ELEMENT_NODE){
if(xmlDeal.getElementValueByName(node, "name")!=null){
System.out.println("name:" + xmlDeal.getElementValueByName(node, "name"));
}
if(xmlDeal.getElementValueByName(node, "value")!=null){
System.out.println("value :" +xmlDeal.getElementValueByName(node, "value"));
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
相关文章推荐
- java解析xml文件
- Java之DOM4J方式解析XML文件(学习笔记)
- java解析xml文件四种方式
- java解析xml文件四种方式
- java中解析xml文件
- java解析XML文件---SAXReader
- Java DOM 解析XML文件
- Java中读取XML文件,生成XML格式的字符串并解析这个字符串
- java解析xml文件的开源工具 — dom4j
- Java 生成和解析xml文件
- 采用dom4j解析XML文件实现Java与oracle连接
- java对XML文件的解析、节点的增加、删除操作总结
- JAXP:(Java API for XML Processing)DOM方式解析XML文件
- Java之Pull方式生成xml文件和解析xml文件
- 用java解析在OpenStreetMap上下载的地图数据(SAX版,适合比较大的xml文件)
- java dom4j解析xml文件
- Java 使用SAX解析xml文件
- 使用Java解析XML文件或XML字符串的例子
- java解析和生成xml文件的补充
- java解析xml文件四种方式