dom4j 생 성 및 해석 xml 파일

xml 파일 이 생 성 된 목적지 와 파일 의 출력 방식 을 지정 할 때 Writer 를 사용 하면 생 성 된 xml 에 중국어 가 포함 되 어 있 을 때 중국어 오류 가 발생 합 니 다.이 때 는 OutputStream 만 사용 할 수 있 습 니 다.Writer 가 중국 어 를 만 났 을 때 어떻게 해석 해 야 할 지 모 르 기 때 문 입 니 다.
예:XML Writer writer=new XML Writer(new FileOutput Stream(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);
		}
	}

좋은 웹페이지 즐겨찾기