代码:
- /*
- * Xml文档对象去掉注释后输出字符串
- * @return
- */
- public String documentToStr(){
- Iterator<Node> nodeIt= doc.nodeIterator();
- //删除根节点上的注释,以及Xml文件中与根节点同级的注释内容
- while(nodeIt.hasNext()){
- Node node=nodeIt.next();
- if(node.getNodeType()==Node.COMMENT_NODE){
- doc.remove(node);
- }
- }
- Element root= doc.getRootElement();
- deleteXmlNotation(root);
- return doc.asXML();
- }
- /**
- * 去掉注释
- * @param ele
- */
- private void deleteXmlNotation(Element ele){
- Iterator<Node>nodes = ele.nodeIterator();
- List<Node> rmNodes=new ArrayList<Node>();
- //循环收集可以删除的节点
- while(nodes.hasNext()){
- Node subNode=nodes.next();
- if(subNode.getNodeType()==Node.COMMENT_NODE){
- //ele.remove(subNode);
- rmNodes.add(subNode);
- rmNodes.add(nodes.next());
- }
- }
- //删除收集到的节点
- for(Node node:rmNodes){
- ele.remove(node);
- }
- //递归,处理下级节点
- Iterator<Element>eleIt= ele.elementIterator();
- while(eleIt.hasNext()){
- deleteXmlNotation(eleIt.next());
- }
- }