利用JDOM解析XML文件
来源:互联网 发布:社会和学校的区别知乎 编辑:程序博客网 时间:2024/05/21 18:45
package text;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
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;
/**
* @author Admin 利用JDOM解析XML文件
*/
public class TestXML {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Document doc;
DocumentBuilderFactory factory;
DocumentBuilder docBuilder;
String elementName;
Element root;
String fileName;
FileInputStream in;
fileName = System.getProperty("user.dir");
fileName = fileName + "/src/sample.xml";
try {
in = new FileInputStream(fileName);
// 解析XML文件生成Document对象
factory = DocumentBuilderFactory.newInstance();
factory.setValidating(false);
try {
docBuilder = factory.newDocumentBuilder();
try {
doc = docBuilder.parse(in);
// 解析成功
System.out.println("解析成功!");
// 获取XML文件的根节点
root = doc.getDocumentElement();
elementName = root.getNodeName();
// 打印根节点的属性
printAttribute(root);
// 打印该文档的全部节点
System.out.println("打印该文档的全部节点");
printElement(root, 0);
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 打印某个节点的全部属性
*
* @param root
*/
public static void printAttribute(Element root) {
NamedNodeMap attributes;
int i, max;
String name, value;
Node curCode;
attributes = root.getAttributes();
max = attributes.getLength();
for (i = 0; i < max; i++) {
curCode = attributes.item(i);
name = curCode.getNodeName();
value = curCode.getNodeValue();
System.out.print(name + " = " + value);
System.out.println();
}
}
/**
* 打印所有节点的名和值 该方法使用的是递归方式打印文档的全部节点
*
* @param root
* @param depth
*/
public static void printElement(Element elem, int depth) {
String elementName;
NodeList children;
int i, max;
Node curChild;
Element curElement;
String nodeName, nodeValue;
// 获取输入节点的全部子节点
children = elem.getChildNodes();
// 按一定格式打印输入节点
for (int j = 0; j < depth; j++) {
System.out.println(" ");
}
printAttribute(elem);
// 采用递归方式打印全部子节点
max = children.getLength();
for (i = 0; i < max; i++) {
curChild = children.item(i);
// 递归退出条件
if (curChild instanceof Element) {
curElement = (Element) curChild;
printElement(curElement, depth + 1);
} else {
nodeName = curChild.getNodeName();
nodeValue = curChild.getNodeValue();
for (int j = 0; j < depth; j++) {
System.out.println("");
}
if (nodeValue.equals("") || nodeValue == null) {
} else {
System.out.print(nodeName + " = " + nodeValue);
}
System.out.println();
}
}
}
}
- 利用JDOM解析XML文件
- 利用JDOM解析xml文件
- 利用JDOM對XML文件的解析
- JDom,jdom解析xml文件
- xml文件解析-JDOM
- JDOM解析XML文件
- JDOM解析XML文件
- Jdom解析xml文件
- jdom 解析xml文件
- jdom解析xml文件
- jdom 解析 xml文件
- JDOM解析XML文件!
- jdom解析xml文件
- JDOM解析XML文件
- JDOM 解析xml文件
- jdom 解析 xml 文件
- JDom解析xml文件
- JDom解析xml文件
- javascript arguments
- 使用RSL来减小你的Flex应用体积
- 手机短信传四川柑橘生蛆 植保部门释疑
- Dundas Chart for .NET 控件的简单使用
- 第一次使用Firebug,goohotels.com截图
- 利用JDOM解析XML文件
- KeyWord的时代
- 六顶思考帽 学习笔记
- 在VC中调用 WebService
- 人生的100条语录
- Configuration Service Provider
- Oracle中ROWNUM的使用技巧。
- Oracle字符串处理函数
- 给那些笨笨的不会追女孩的程序员老爷们