新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论DOM, SAX, XPath等。
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - XML技术『 DOM/SAX/XPath 』 → 各位大虾帮忙看看,关于用DOM删除XML中数据 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 3306 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 各位大虾帮忙看看,关于用DOM删除XML中数据 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     mianku 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:0
      积分:52
      门派:XML.ORG.CN
      注册:2007/7/17

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给mianku发送一个短消息 把mianku加入好友 查看mianku的个人资料 搜索mianku在『 DOM/SAX/XPath 』的所有贴子 引用回复这个贴子 回复这个贴子 查看mianku的博客楼主
    发贴心情 各位大虾帮忙看看,关于用DOM删除XML中数据

    package tss;

    import javax.xml.parsers.*;
    import java.io.*;
    import org.xml.sax.*;
    import org.w3c.dom.*;
    import javax.xml.transform.TransformerException;
    import javax.xml.transform.TransformerFactory;
    import javax.xml.transform.Transformer;
    import javax.xml.transform.dom.DOMSource;
    import javax.xml.transform.stream.StreamResult;
    import javax.xml.transform.OutputKeys;


    public class test1 {
        public test1() {
        }

        public static void main(String[] args) {
            try {
                File file = new File("student.xml");
                Document dom = DocumentBuilderFactory.newInstance().
                               newDocumentBuilder().parse(file);
                Element el = dom.createElement("student");
                Element els1 = dom.createElement("name");
                Element els2 = dom.createElement("age");

                Text text1 = dom.createTextNode("aaa");
                Text text2 = dom.createTextNode("123");

                els1.appendChild(text1);
                els2.appendChild(text2);

                el.appendChild(els1);
                el.appendChild(els2);
                test1 ts = new test1();
             // ts.inserts(dom, 0, el, "students", file);
             //  ts.updates(dom,"aaaaaaaa","dfsd",file);
             // ts.removes(dom,file,"aaaaaaaa");
                try {
                    ts.removes(dom, file, el);
                } catch (FileNotFoundException ex1) {
                } catch (TransformerException ex1) {
                }
            } catch (ParserConfigurationException ex) {
            } catch (IOException ex) {
            } catch (SAXException ex) {
            }
        }

        public void inserts(Document dom, int index, Element el, String push,
                            File file) {
            NodeList ns = dom.getElementsByTagName(push);
            Element n = (Element) ns.item(index);
            n.insertBefore(el, n.getFirstChild());
            try {
                this.toXml(dom, file);
            } catch (TransformerException ex) {
            } catch (FileNotFoundException ex) {
            }
        }

        public void updates(Document dom,String value,String curr,File file) {
          NodeList ns=dom.getElementsByTagName("name");
          Element e;
          for(int i=0;i<ns.getLength();i++){
              e=(Element)ns.item(i);
              if(e.getFirstChild().getNodeValue().equals(curr)){
                  e.getFirstChild().setNodeValue(value);
              }
          }
            try {
                this.toXml(dom, file);
            } catch (TransformerException ex) {
            } catch (FileNotFoundException ex) {
            }
            }
            public void removes(Document dom,File file,Element el) throws
                TransformerException, FileNotFoundException {
                el.getFirstChild().removeChild(el);
                this.toXml(dom,file);
            }
    //      public void removes(Document dom,File file,String name){
    //          NodeList ns=dom.getElementsByTagName("student");
    //          Element e;
    //          for(int i=0;i<ns.getLength();i++){
    //              e=(Element) ns.item(i);
    //              if(e.getFirstChild().getNodeValue().equals(name)){
    //                  e.getFirstChild().removeChild(e);
    //              }
    //          }
    //        try {
    //            this.toXml(dom, file);
    //        } catch (TransformerException ex) {
    //        } catch (FileNotFoundException ex) {
    //        }
    //      }

        public void toXml(Document doc, File file) throws FileNotFoundException,
                TransformerException {
            TransformerFactory tf = TransformerFactory.newInstance();
            Transformer t = tf.newTransformer();
            DOMSource dos = new DOMSource(doc);
            StreamResult sr = new StreamResult(new FileOutputStream(file));
            t.setOutputProperty(OutputKeys.ENCODING, "GB2312");
            t.transform(dos, sr);
        }

    }

    添加和更新都没问题了,就是删除的时候怎么都删除不了,各位大虾帮忙看看
    错误出在那里了谢谢了,我目的是删除下面的student元素

    <?xml version="1.0" encoding="GB2312"?>
    <students>
     <student>
      <name>aaaaaaaa</name>
      <age>23</age>
     </student>
     
     <student>
      <name>aa</name>
      <age>21</age>
     </student>
     <student>
      <name>aaaaaaaa</name>
      <age>23</age>
     </student>
     <student>
      <name>bb</name>
      <age>22</age>
     </student>
     <student>
      <name>aaaaaaaa</name>
      <age>23</age>
     </student>
     
    </students>


       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/7/17 20:00:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 DOM/SAX/XPath 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2025/1/15 17:10:40

    本主题贴数1,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    93.750ms