第一中w3c的解析方式去实现的
1首先创建一个xml文件 xml中自定义但是标签要成对存在
<?xml version="1.0" encoding="utf-8" ?> <persons> <person> <name>zs</name> <age>19</age> <sex>女</sex> </person> <person> <name>ls</name> <age>20</age> <sex>男</sex> </person> <person> <name>wu</name> <age>21</age> <sex>女</sex> </person> </persons>
2.创建一个相对应的类 这是我自己创建的
public class Person { public Person() {} public Person(String name, String age, String sex) { this.name = name; this.age = age; this.sex = sex; } @Override public String toString() { return name+"\t"+age+"\t"+sex; } public void setName(String name) { this.name = name; } public void setAge(String age) { this.age = age; } public void setSex(String sex) { this.sex = sex; } private String name; public String getName() { return name; } public String getAge() { return age; } public String getSex() { return sex; } private String age; private String sex; }3.解析xml
public static void main(String[] args)throws Exception { //w3c dom //创建 dom解析的工厂 DocumentBuilderFactory dbf= DocumentBuilderFactory.newInstance(); //生产一种设备dom解析器 DocumentBuilder db=dbf.newDocumentBuilder(); //解析成Dom(document) Document d=db.parse("src/xml/persons.xml"); //处理你关心的数据 Element root=d.getDocumentElement(); System.out.println(root); NodeList nodlist= root.getChildNodes(); List<Person> people=new ArrayList<Person>(); for (int i = 0; i<nodlist.getLength(); i++) { Node node=nodlist.item(i); if(node.getNodeType()==Node.ELEMENT_NODE){ System.out.println(node); NodeList pnl=node.getChildNodes(); String name=null; String age=null; String sex=null; for (int j = 0; j <pnl.getLength() ; j++) { Node pn=pnl.item(j); if(pn.getNodeType()==Node.ELEMENT_NODE){ if(pn.getNodeName().equals("name")){ name=pn.getTextContent(); } if(pn.getNodeName().equals("age")){ age=pn.getTextContent(); } if(pn.getNodeName().equals("sex")){ sex=pn.getTextContent(); } } } people.add(new Person(name,age,sex)); } } for (Person p:people) { System.out.println(p); } }这样就可以解析出xml标签中的数据了 引入的都是w3c的import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList;
第二种dom4j解析xml
public void testreadxml(){
try {
// //获取解析器
// SAXReader saxr=new SAXReader();
// //document文档
// Document doc=saxr.read("src/com/bdqn/xml/MyXml.xml");
// //获取根元素
// Element rootel= doc.getRootElement();
// //System.out.println(rootel.getName());
// //获取根下的子元素
// Element chilElement= rootel.element("servlet");
// //获取servlet-class的文本节点
// String servletclass=chilElement.element("servlet-class").getText();
// //通过全名获取字节码
// Class clazz=Class.forName(servletclass);
// //创建实例
// Myservlet my=(Myservlet) clazz.newInstance();
// my.init();
} catch (Exception e) {
e.printStackTrace();
}
}
两种方式各有个的优缺点 根据自己的实际情况选择