dom4j生成和解析xml文件

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 在生成xml文件指定生成的目的地和文件的输出方式时,如果使用的是Writer,那么在生成的xml中含有中文的时候会出现中文乱码,此时就只能使用OutputStream了,因为Writer遇到中文的时候不知道该如何解析。

在生成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 {
		//新建一个document
		Document document = DocumentHelper.createDocument();
		//设置输出字符集
		document.setXMLEncoding("UTF-8");
		//新建一个位于document下的元素persons
		Element personsEle = document.addElement("persons");
		for (int i=1;i<6;i++) {
			//新建一个位于persons下的元素person
			Element 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);
		}
	}

 

目录
相关文章
|
1天前
云解析分享文件
这座建筑结合了现代设计与和谐的自然景观。大面积的玻璃窗让居住者可以充分享受美景和阳光,同时保证了室内充足的自然光线。是体验宁静生活与自然之美的理想之地。图片展现了其优美的自然环境和现代建筑设计的完美融合。
17 6
云解析分享文件
|
6天前
|
XML Web App开发 JavaScript
XML DOM 解析器
XML DOM 解析器
|
2天前
|
XML Web App开发 JavaScript
XML DOM 解析器
XML DOM 解析器
|
10天前
|
XML Web App开发 JavaScript
XML DOM 解析器
XML DOM 解析器
|
7天前
|
JSON 前端开发 JavaScript
解析JSON文件
解析JSON文件
28 9
|
8天前
|
XML Web App开发 JavaScript
XML DOM 解析器
XML DOM 解析器
|
16天前
|
XML Web App开发 JavaScript
XML DOM 解析器
XML DOM 解析器
|
12天前
|
XML Web App开发 JavaScript
XML DOM 解析器
XML DOM 解析器
|
14天前
|
XML Web App开发 JavaScript
XML DOM 解析器
XML DOM 解析器
|
19天前
|
XML Web App开发 JavaScript
XML DOM 解析器
XML DOM 解析器

推荐镜像

更多