读书人

dom4j生成和好析xml文件

发布时间: 2012-10-27 10:42:26 作者: rapoo

dom4j生成和解析xml文件

在生成xml文件指定生成的目的地和文件的输出方式时,如果使用的是Writer,那么在生成的xml中含有中文的时候会出现中文乱码,此时就只能使用OutputStream了,因为Writer遇到中文的时候不知道该如何解析。

如:XMLWriter writer = new XMLWriter(new FileOutputStream(dest), format);

?

?

?

?

?

?

/** * 创建xml文件 * @param dest * @throws IOException */public static void createXml(String dest) throws IOException {//新建一个documentDocument document = DocumentHelper.createDocument();//设置输出字符集document.setXMLEncoding("UTF-8");//新建一个位于document下的元素personsElement personsEle = document.addElement("persons");for (int i=1;i<6;i++) {//新建一个位于persons下的元素personElement person = personsEle.addElement("person");//添加属性person.addAttribute("id", String.valueOf(i));person.addAttribute("sex", new String("女".getBytes()));Element name = person.addElement("name");name.setText("person"+i);}//美化输出格式OutputFormat format = OutputFormat.createPrettyPrint();//新建一个XMLWriter,同时指定输出位置和格式XMLWriter writer = new XMLWriter(new FileOutputStream(dest), format);//把新建好的document写到指定输出位置writer.write(document);writer.close();}/** * 读取并解析xml文件 * @param fileName * @throws DocumentException */public static void readXml(String fileName) throws DocumentException {SAXReader reader = new SAXReader();Document document = reader.read(Util.class.getClassLoader().getResourceAsStream(fileName));Element root = document.getRootElement();iteratorEle(root);}/** * 通过父节点来遍历其下的所有子节点,并取出它们的文本值和属性值 * @param root */public static void iteratorEle(Element root) {String rootName = root.getName();Iterator iter = root.elementIterator();while (iter.hasNext()) {Element ele = (Element) iter.next();String eleName = ele.getName();System.out.println("元素"+rootName+"有子节点"+eleName);Iterator attrIter = ele.attributeIterator();while (attrIter.hasNext()) {Attribute attr = (Attribute)attrIter.next();String attrName = attr.getName();String attrValue = (String)attr.getData();System.out.println("元素"+rootName+"的子元素"+eleName+"的属性"+attrName+"的值是:"+attrValue);}if (ele.isTextOnly()) {String content = ele.getText();System.out.println("元素"+rootName+"的子元素"+eleName+"的值是:"+content);}iteratorEle(ele);}}

?

读书人网 >XML SOAP

热点推荐