现在的位置: 首页 > 综合 > 正文

碰到写xml文件的一个错误

2018年04月18日 ⁄ 综合 ⁄ 共 1189字 ⁄ 字号 评论关闭
w3c.dom写xml文件时候 如果对Element元素进行操作,而将该Element赋给另一个document元素时候,会报错:
 org.w3c.dom.DOMException: WRONG_DOCUMENT_ERR: A node is used in a different document than the one that created it.
由于Element元素不是同一个document元素生成的,所以会报错,此时 要把该Element赋给另一个xml文件时候,需要通过:
public static void sendAlarm(List<Element> elements) {
		
		if(elements != null && !elements.isEmpty()){
			ObjectOutputStream oos = null;
			try {
				DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
				DocumentBuilder	builder = dbf.newDocumentBuilder();
				Transformer transformer = TransformerFactory.newInstance().newTransformer();	
				oos = new ObjectOutputStream(new Socket(host, port).getOutputStream());
				transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");	
				for (Element element : elements){
					Document doc = builder.newDocument();	
					<strong><span style="font-size:18px;color:#339999;">doc.appendChild(doc.importNode(element, true));</span></strong>
				
					
					//document 转 string
					ByteArrayOutputStream   bos   =   new   ByteArrayOutputStream();
					transformer.transform(new DOMSource(doc), new StreamResult(bos));
					String xmlStr = bos.toString();
					
					log.info(xmlStr);
					
					oos.writeObject(xmlStr);
					oos.flush();
				}
				
			} catch (Exception e) {
				e.printStackTrace();
			} finally {
				if(oos != null) {
					try {
						oos.close();
					} catch (IOException e) {
						e.printStackTrace();
					}
				}
			}
		}
	}

即可

抱歉!评论已关闭.