帮同学写了一个小程序,功能是删除XML文件里指定的tagName元素,然后在输出新的XML文件,原程序如下:
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;import org.apache.xerces.parsers.DOMParser;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.xml.sax.SAXException;
public class Test {
/*需要修改的XML地址*/
private String url; public Test(String url){
this.url = url;
}
/*读取XML文件并返回根节点*/
public Node parser(String url) throws SAXException, IOException{
DOMParser parser = new DOMParser();
parser.parse(url);
Document doc = parser.getDocument();
return doc.getChildNodes().item(0);
}
/*递归操作每个节点元素*/
public Node operate(Node node,List<String> list){
for(int i=0;i<node.getChildNodes().getLength();i++){
Node childnode = node.getChildNodes().item(i);
this.operate(childnode, list);
/*如果list中有此节点名称,则删除*/
if(list.contains(childnode.getLocalName())){
childnode.getParentNode().removeChild(childnode);
}
}
return node;
}
/*将新的NODE节点形成新的XML文件*/
public void document2xmlfile(Node node){
try{   
            TransformerFactory   tfactory=TransformerFactory.newInstance();   
            Transformer   transformer=tfactory.newTransformer();   
            DOMSource   source=new   DOMSource(node);
            /*新文件的地址*/
            File file = new File("D:\\newxmlfile.xml");
            StreamResult result=new  StreamResult(file);   
            transformer.transform(source,result);   
        }catch(Exception   e){   
            e.printStackTrace();   
        } 
}
/*初始化需要删除的节点名称*/
public static List<String> deleteTagName(){
ArrayList<String> list = new ArrayList<String>();
/*标签<b>里的内容将被删除*/
list.add("b");
return list;
}
public  static void main(String[] args)throws Exception{
/*测试*/
Test test = new Test("d:\\test.xml");
Node node = test.operate(test.parser(test.url),deleteTagName());
test.document2xmlfile(node);
}
}test.xml文件如下:
<?xml version="1.0" encoding="utf-8"?>
<html>
<head>
<meta name="generator" content="HTML Tidy, see www.w3.org"> </meta>
<title>Title of page</title>
<b>This text is bold</b>
</head>
<body>
This is my first homepage. <b>This text is bold</b>
</body>
</html>运行后,输出新的newxmlfile.xml文件如下:
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta content="HTML Tidy, see www.w3.org" name="generator"> 
</meta>
<title>Title of page</title>
</head><body>
This is my first homepage. 
</body>
</html>问题:1.红色部分不知道是怎么产生的,并且他不符合XML的格式规范,在浏览器里打开出错
     2.如果将节点"<head>"改名则程序运行正常请高手指点,小弟不胜感激.