读取xml文件

<!-- lang: java -->
package com.operation; 

import java.io.File; import java.io.IOException; 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.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException;

public class XMLParse { Document document = null;

NodeList allNode = null;

// 构造函数,初始化Document对象 public XMLParse() { // 指定File文件 File file = new File("E:/MyXml.xml");

// 建立DocumentBuilderFactory对象 
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance(); 
DocumentBuilder builder; 
try 
{ 
  // 建立DocumentBuilder对象 
  builder = builderFactory.newDocumentBuilder(); 
  // 用DocumentBuilder对象的parse方法引入文件建立Document对象 
  document = builder.parse(file); 
  allNode = document.getChildNodes(); 
    
  // 测试1:找出所有person标签,返回NodeList 
  NodeList person = document.getElementsByTagName("person"); 
  // 按条件输出peron标签中的属性和值 
  showByCondition(person); 

  // 测试2:遍历所有节点 
  searchAndShow(allNode); 

  // 测试3:按标签名查找输出 
  this.SearchByCondition(person); 
} 
catch (ParserConfigurationException e) 
{ 
  e.printStackTrace(); 
} 
catch (SAXException e) 
{ 
  e.printStackTrace(); 
} 
catch (IOException e) 
{ 
  System.err.println("找不到你指定的文件!"); 
  e.printStackTrace(); 
} 

}

// 例:寻找遍历 public void searchAndShow(NodeList allNode) { System.out.println(); System.out.println("------searchAndShow输出结果-------"); for (int i = 0; i < allNode.getLength(); i++) { // 得到一个节点,需要强制转换为Element,这里Node是Element的父类 Node node = allNode.item(i); if (!node.getNodeName().equals("#text")) { System.out.println("节点名称:" + node.getNodeName()); } // System.out.println(element.getAttribute(""));

  if (node.getChildNodes().getLength() > 3) 
  { 
    // 若包含子节点,则递归遍历 
    System.out.println("此节点包含子元素!"); 
    searchAndShow(node.getChildNodes()); 
  } 
  else 
  { 
    // 若不包含子节点,则输出节点中的内容 
    if (!node.getTextContent().trim().equals("") 
        && node.getTextContent() != null) 
    { 
      System.out.println("节点值:" + node.getTextContent()); 
    } 
  } 
} 

}

// 按条件输出 public void showByCondition(NodeList allNode) { System.out.println(); System.out.println("------showByCondition输出结果-------"); Element element; // 对符合条件的所有节点进行遍历 for (int i = 0; i < allNode.getLength(); i++) { // 获得一个元素 element = (Element) allNode.item(i); // 输出这个元素的personid属性 System.out.println(element.getAttribute("personid")); // 此元素有子节点,获取所有子节点,返回一个personList NodeList personList = element.getChildNodes(); // 遍历所有子节点 for (int j = 0; j < personList.getLength(); j++) { // 若子节点的名称不为#text,则输出,#text为反/标签 if (!personList.item(j).getNodeName().equals("#text")) { // 输出节点名称、节点值 System.out.println(personList.item(j).getNodeName() + ":" + personList.item(j).getTextContent()); } } } }

// 按标签名寻找节点 public void SearchByCondition(NodeList allNode) { System.out.println(); System.out.println("------SearchByCondition输出结果-------"); Element element; // 对符合条件的所有节点进行遍历 for (int i = 0; i < allNode.getLength(); i++) { // 用document来查找所有name标签,得到一个标签后输出值 String name = document.getElementsByTagName("name").item(i) .getTextContent(); System.out.println("姓名:" + name);

  // 用document来查找所有tel标签,得到一个标签后输出值 
  String tel = document.getElementsByTagName("tel").item(i) 
      .getTextContent(); 
  System.out.println("电话:" + tel); 

  // //用document来查找所有tel标签,得到一个标签后输出值 
  String sex = document.getElementsByTagName("email").item(i) 
      .getTextContent(); 
  System.out.println("email:" + sex); 
  System.out.println("==================="); 
} 

}

public static void main(String[] args) { new XMLParse(); } }

转载于:https://my.oschina.net/jiefalcon/blog/155826

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值