xml的解析

来源:互联网 发布:炽阳魔盒软件下载 编辑:程序博客网 时间:2024/06/17 18:27

第一中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();}}
两种方式各有个的优缺点 根据自己的实际情况选择

原创粉丝点击