Java中如何解析XML文件(转)

xml文件:"student.xml"

xml 代码

 

MICHAEL 24

武汉
王黎 24
武汉
莫智洲 24
武汉
曹锋 23
武汉

 
  

 dtd文件:"student.dtd"

 

python 代码
 
  
  java文件:"DomTest.java"
package test; /** * * @描述:解析XML文件的测试类。 * @作者: 赵明 * 2007-9-5 */ import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; 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 DomTest { public static void main(String[] args){ List stuArrList = new ArrayList();//创建用来保存学生信息的集合。 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); try { DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse(new File("student.xml")); Element root = doc.getDocumentElement();//得到文档对象树。 //System.out.println(root); System.out.println("根元素名称:"+root.getTagName()); NodeList stuList = root.getElementsByTagName("student"); //开始逐个创建学生对象。 for(int i = 0; i < stuList.getLength();i++){ Student s = new Student(); Element stuE = (Element)stuList.item(i); //System.out.println(stuE); s.setSex(stuE.getAttribute("sex"));//向学生对象中写入性别属性。 NodeList stuInfoList = stuE.getChildNodes(); for(int j = 0;j < stuInfoList.getLength();j++){ Node temp = stuInfoList.item(j); if(temp.getNodeType()==Node.ELEMENT_NODE){//判断对象的类型的节点是不是元素。 Element tempE = (Element)temp;//转换类型到元素。 Node initW = tempE.getLastChild(); //Node initW = tempE.getFirstChild(); //由于只有一个节点,第一和最后一个都是同一个。 if("name".equals(tempE.getNodeName())){ s.setName(initW.getNodeValue());//加入姓名。 }if("age".equals(tempE.getNodeName())){ s.setAge((Integer.parseInt(initW.getNodeValue())));//加入年龄。 }if("address".equals(tempE.getNodeName())){ s.setAddress((initW.getNodeValue()));//加入地址。 } } } stuArrList.add(s);//添加进集合中。 } Iterator ite = stuArrList.iterator();//使用跌代器遍历集合元素。 while(ite.hasNext()){ Student s = (Student)ite.next(); System.out.println(s); } } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
  java 代码 
  

java文件:"Student.java" 

java 代码
package test; /** * * @描述:学生类用来保存学生的信息。 * @作者: 赵明 * 2007-9-5 */ public class Student { private String name; private String sex; private int age; private String address; public String toString(){//覆盖该方法。 return name+"-"+sex+"-"+age+"-"+address; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } }
   
   运行结果: 
  
ruby 代码
根元素名称:zmclass MICHAEL-男-24-武汉 王黎-女-24-武汉 莫智洲-男-24-武汉 曹锋-男-23-武汉
   
  

 

你可能感兴趣的:(java,XML,Java,Python,Ruby,J#)