Java中如何解析XML文件

Java中如何解析XML文件

[color=red]xml文件:"student.xml"
xml 代码[/color]





MICHAEL
24
武汉



王黎
24
武汉



莫智洲
24
武汉



曹锋
23
武汉




[color=red]dtd文件:"student.dtd"
python 代码[/color]











[color=red]java文件:"DomTest.java"[/color]



package test;
/**
*
* @描述:解析XML文件的测试类。
*/
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();
}
}
}

[color=red]java 代码

java文件:"Student.java"
java 代码[/color]

package test;
/**
*
* @描述:学生类用来保存学生的信息。
*/
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;
}
}



[color=red]运行结果:
ruby 代码[/color]

根元素名称:zmclass
MICHAEL-男-24-武汉
王黎-女-24-武汉
莫智洲-男-24-武汉
曹锋-男-23-武汉

你可能感兴趣的:(java,java,xml,python)