微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

碰到写xml文件的一个错误

w3c.dom写xml文件时候 如果对Element元素进行操作,而将该Element赋给另一个document元素时候,会报错:
org.w3c.dom.DOMException:WRONG_DOCUMENT_ERR:Anodeisusedinadifferentdocumentthantheonethatcreatedit.
由于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();
					}
				}
			}
		}
	}
即可

原文地址:https://www.jb51.cc/xml/297859.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。