-1.网上的教程为什么都是这么老的教程,难道是我的搜索方式有问题??
使用for遍历,使用equals,这效率不敢想象啊。
0.使用包:xmlbeans-2.3.0.jar
1.xml文本
<?xml version="1.0" encoding="UTF-8"?>
<!--我是注释!包含ommbFtp和数据库模块-->
<module>
<ommbFtp>
<ip>10</ip>
<port>21</port>
<userName>a</userName>
<passWord>b</passWord>
</ommbFtp>
<database>
<ip>12</ip>
<port>1521</port>
<userName>system</userName>
<passWord>123456</passWord>
<instance>oracle</instance>
</database>
</module>
2.显示xml
2.1获取根节点
package utils;
import java.io.FileInputStream;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class PaseXml {
/*
* element.getNodeName(),获取节点名
* (element | Node) .getChildNodes(),获取节点下的子节点list,返回NodeList
* node.getAttributes().getNamedItem("type").getNodeValue(),节点属性键对应的值
*/
public static void main(String[] args) throws Exception {
ShowXml();
}
public static void ShowXml() throws Exception{
String filePath = "conf/ommbNOData.xml";
FileInputStream fis = new FileInputStream(filePath);
//获取所需的4个对象:文档构建工厂,文档构建,文档,(根)元素
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document document = db.parse(fis);
Element element = document.getDocumentElement();
//获得子节点list,for遍历,获得孙节点,for遍历,得到孙节点的元素
System.out.println("根元素:" + element.getNodeName()); // 获得根节点
NodeList sonNodes = element.getChildNodes(); // 获得根元素下的子节点
for (int i = 0; i < sonNodes.getLength(); i++) // 遍历这些子节点
{
Node sonNode = sonNodes.item(i);
NodeList grandsonNodes = sonNode.getChildNodes(); // 获得<Accounts>下的节点
for (int j = 0; j < grandsonNodes.getLength(); j++) { // 遍历<Accounts>下的节点
Node grandsonNode = grandsonNodes.item(j); // 获得<Accounts>元素每一个节点
if ("ip".equals(grandsonNode.getNodeName())) // 输出code
System.out.println("ip: " + grandsonNode.getTextContent());
else if ("port".equals(grandsonNode.getNodeName()))
System.out.println("port: " + grandsonNode.getTextContent());
else if ("userName".equals(grandsonNode.getNodeName()))
System.out.println("userName: " + grandsonNode.getTextContent());
else if ("passWord".equals(grandsonNode.getNodeName()))
System.out.println("passWord: " + grandsonNode.getTextContent());
}
}
}
}