以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 DOM/SAX/XPath 』  (http://bbs.xml.org.cn/list.asp?boardid=11)
----  删除根结点下几个同名结点中的一个,如何删除?[求助]  (http://bbs.xml.org.cn/dispbbs.asp?boardid=11&rootid=&id=23568)


--  作者:fzuqi3
--  发布时间:10/26/2005 2:56:00 PM

--  删除根结点下几个同名结点中的一个,如何删除?[求助]
我使用Jdom,及java

xml文件如下:

<root>
  <book>
    <id>1</id>
    <other>a</other>
  </book>
  <book>
    <id>2</id>
    <other>a</other>
  </book>
  <book>
    <id>3</id>
    <other>a</other>
  </book>
<book>
    <id>4</id>
    <other>a</other>
  </book>
</root>

我要删除的是id为3的book.

我可以找到id为3的book,但在使用root.removeChild(参数),
其中的参数我找不到可以删除当前结点的,谁能告诉我怎么办,能给个实例最好!!


--  作者:wqw
--  发布时间:11/2/2005 12:11:00 AM

--  
<HTML>
<BODY>
<SCRIPT LANGUAGE="JavaScript">
 var xmlDoc=new ActiveXObject("microsoft.XMLDOM");
 xmlDoc.async=false;
 xmlDoc.load("a.xml");
 var root=xmlDoc.documentElement;
 root.removeChild(root.childNodes[2]);
 window.alert(root.xml);
</SCRIPT>
</BODY>
</HTML>
这样就ok了!
--  作者:fzuqi3
--  发布时间:11/2/2005 9:08:00 AM

--  
謝謝wqw,我是在Java下做的,
現在我已經找到解決的方法的,
不過還是謝謝你!
順便說一下我做的方法:
假設我的config為我上面提到的xml字符串
        InputStream fi = null;
        byte[] b = config.getBytes();
        fi = new ByteArrayInputStream(b);
        SAXBuilder sb = new SAXBuilder();
        Document doc = null;
        String outStr ="";//我的程序中用來輸出的
        try {
            doc = sb.build(fi);
        } catch (JDOMException e) {
            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        } catch (IOException e) {
            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        }finally{
        fi.close;
        }
        Element root = doc.getRootElement();
        List services = root.getChildren();
        boolean flag = false;    //标记是否已删除
        for(int i=0; i<services.size(); i++){
            Element service = (Element)services.get(i);
            if(service.getChildTextTrim("id").equalsIgnoreCase("3"){
                root.removeContent(i); //刪除
                flag = true;
                break;
            }
        }
        if(!flag){
        //如果沒有刪除做相應的處理;
        }


--  作者:wqw
--  发布时间:11/3/2005 11:57:00 PM

--  
呵呵,我只是一个初学者,在你面前班门弄斧了,你有时间帮我看看我的那个问题怎么解决?
我的事列写出来了,如果你有时间的话,帮我写出个正确答案,在这里小弟先谢谢你了!!
--  作者:wqw
--  发布时间:11/4/2005 12:01:00 AM

--  
用Html的java脚本写

W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
58.594ms