dom4j处理xml文件,读取xml字符串,格式化xml文件

1.xml文件

 

<?xml version="1.0" encoding="UTF-8"?>

<employees>

    <employee>

        <name>steve</name>

        <sex>m</sex>

        <age>30</age>

    </employee>

</employees>

2.java interface

 

/**

 * @author huangjing

 * @date 2014-2-13 

 * 定义XML文档建立与解析的接口 

 */

public interface XmlDocument {

    /** * 建立XML文档 * @param fileName 文件全路径名称 */ 

    public void createXml(String fileName); 

    

    /** * 解析XML文档 * @param fileName 文件全路径名称 */ 

    public void parserXml(String fileName); 

    

    /***

     * 解析短信发送返回的xml信息,封装成map.

     * @param sms

     * @return

     */

    public Map parserSmsXml(String sms);

}

3.java implements

 

/**

 * @author huangjing

 * @date 2014-2-13

 */

public class Dom4j implements XmlDocument {



    @Override

    public void createXml(String fileName) {

        Document document = DocumentHelper.createDocument();

        Element employees = document.addElement("employees");

        Element employee = employees.addElement("employee");

        Element name = employee.addElement("name");

        name.setText("dddvip");

        Element sex = employee.addElement("sex");

        sex.setText("f");

        Element age = employee.addElement("age");

        age.setText("29");

        try {

            /** 格式化输出,类型IE浏览一样 */  

            OutputFormat format = OutputFormat.createPrettyPrint(); 

            Writer fileWriter = new FileWriter(fileName);

            XMLWriter xmlWriter = new XMLWriter(fileWriter,format);

            xmlWriter.write(document);

            xmlWriter.close();

        } catch (IOException e) {

            System.out.println(e.getMessage());

        }

    }



    @Override

    public void parserXml(String fileName) {

        File inputXml = new File(fileName);

        SAXReader saxReader = new SAXReader();

        try {

            Document document = saxReader.read(inputXml);

            Element employees = document.getRootElement();

            for (Iterator i = employees.elementIterator(); i.hasNext();) {

                Element employee = (Element) i.next();

                for (Iterator j = employee.elementIterator(); j.hasNext();) {

                    Element node = (Element) j.next();

                    System.out.println(node.getName() + ":" + node.getText());

                }

            }

        } catch (DocumentException e) {

            System.out.println(e.getMessage());

        }

        System.out.println("dom4j parserXml");

    }



    @Override

    public Map parserSmsXml(String sms) {

        Map map = new HashMap();

//        SAXReader saxReader = new SAXReader();

        try {

            Document document = DocumentHelper.parseText(sms);             Element returnsms = document.getRootElement();

            for (Iterator i = returnsms.elementIterator(); i.hasNext();) {

//                Element employee = (Element) i.next();

//                for (Iterator j = employee.elementIterator(); j.hasNext();) {

                    Element node = (Element) i.next();

//                    System.out.println(node.getName() + ":" + node.getText());

                    map.put(node.getName(), node.getText());

//                }

            }

        } catch (DocumentException e) {

            e.printStackTrace();

            System.out.println(e.getMessage());

        }

        return map;

    }

}

4.测试parserSmsXml方法

@Test

    public void testParserSmsXml(){

        String sms = "<?xml version='1.0' encoding='utf-8' ?><returnsms>"+

             "<returnstatus>Success</returnstatus>"+

             "<message>ok</message>"+

             "<remainpoint>76904</remainpoint>"+

             "<taskID>5002192</taskID>"+

             "<successCounts>1</successCounts></returnsms>";

        XmlDocument d = new Dom4j();

        Map map = d.parserSmsXml(sms);

        System.out.println(map);

    }

 



 

你可能感兴趣的:(dom4j)