用java语言向xml文件里面插入数据,运行没有出错,但是没有反应插入不了。
xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<店铺分类>
<服装>
<品牌>利郎</品牌>
<品牌>七匹狼</品牌>
</服装>
<鞋>
<品牌>阿迪达斯</品牌>
<品牌>李宁</品牌>
</鞋>
<手机>
<品牌>诺基亚</品牌>
<品牌>索爱</品牌>
<品牌>摩托罗拉</品牌>
</手机>
<电脑>
<品牌>戴尔</品牌>
<品牌>联想</品牌>
<品牌>神州</品牌>
</电脑>
</店铺分类>
java代码:
import  org.w3c.dom.*;
import javax.xml.parsers.*;
import java.io.*;
import org.apache.struts2.ServletActionContext;public void insertnode(String nodename,String name)throws Exception{
DocumentBuilderFactory fc=DocumentBuilderFactory.newInstance();
 DocumentBuilder builder=fc.newDocumentBuilder();
 Document doc=builder.parse(new File("WebRoot/category.xml"));
 Element root=doc.getDocumentElement();
 Node node=root.appendChild(doc.createElement("品牌"));
 Element e=(Element)node;
 e.appendChild(doc.createTextNode(name));
}
public static void main(String[] args){
try{
Category c=new Category();
c.insertnode("鞋", "匹克");
}catch(Exception e){
System.out.print(e);
}
}
}
俺是个初学者,望高手指点!谢谢了

解决方案 »

  1.   

    你的这个只是在内存中插入了,没有save到文件中去。保存doc到文件中去的代码如下。TransformerFactory factory = TransformerFactory.newInstance();
    Transformer transformer = factory.newTransformer();
    Properties formats = new Properties();
    formats.setProperty(OutputKeys.INDENT, "yes");
    formats.setProperty(OutputKeys.ENCODING, "utf-8");transformer.setOutputProperties(formats);DOMSource ds = new DOMSource(doc);
    StreamResult sr = new StreamResult(new FileOutputStream("WebRoot/category.xml"));transformer.transform(ds, sr);
      

  2.   


    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.Properties;
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.parsers.ParserConfigurationException;
    import javax.xml.transform.OutputKeys;
    import javax.xml.transform.Transformer;
    import javax.xml.transform.TransformerException;
    import javax.xml.transform.TransformerFactory;
    import javax.xml.transform.dom.DOMSource;
    import javax.xml.transform.stream.StreamResult;
    import org.w3c.dom.Document;
    import org.w3c.dom.Element;
    import org.xml.sax.SAXException;
    public class Test {
    public static void main(String[] args) throws SAXException, IOException, ParserConfigurationException, TransformerException {
    DocumentBuilderFactory fc=DocumentBuilderFactory.newInstance(); 
    DocumentBuilder builder=fc.newDocumentBuilder();
    File file=new File("D:\\test.xml");
    InputStream is=new FileInputStream(file);
    Document doc=builder.parse(is); 
    Element root=doc.getDocumentElement(); 
    Element node=doc.createElement("品牌");
    root.appendChild(node);
    node.setTextContent("耐克");
    TransformerFactory tf=TransformerFactory.newInstance();
        Transformer t=tf.newTransformer();
        Properties props=t.getOutputProperties();
        props.setProperty(OutputKeys.ENCODING, "UTF-8");
        t.setOutputProperties(props);
        DOMSource dom=new DOMSource(doc);
        StreamResult sr=new StreamResult(file);
        t.transform(dom, sr);
    }
    }