以文本方式查看主题 - W3CHINA.ORG讨论区 - 语义网·描述逻辑·本体·RDF·OWL (http://bbs.xml.org.cn/index.asp) -- 『 DOM/SAX/XPath 』 (http://bbs.xml.org.cn/list.asp?boardid=11) ---- 如何在DOM中删除某一特点结点 (http://bbs.xml.org.cn/dispbbs.asp?boardid=11&rootid=&id=18070) |
-- 作者:sharri -- 发布时间:5/10/2005 1:06:00 PM -- 如何在DOM中删除某一特点结点 我的这段程序是一个递归,根据输入的字符串查找到相应结点并修改其值.同时,在次过程中若发现另一指定结点,这里为删除status=“absent”的<senator>.但是程序运行时总是在该结点被删除之后报错,说出现空的指针. 谁能帮我解决这个问题?
////////////////////////////////////////////////////////////////////// if ((newNode.getNodeName().equals("senator"))&& ( ( (Element) newNode).getAttributeNode("status").getNodeValue(). } NodeList childs = newNode.getChildNodes(); } |
-- 作者:xhxasdf -- 发布时间:5/11/2005 9:15:00 AM -- 女的 搞 xml 强 |
-- 作者:栖霞旧友 -- 发布时间:5/11/2005 9:25:00 PM -- public static void removeNode(Document doc) { Element root = doc.getDocumentElement(); NodeList children = root.getChildNodes(); for (int i = 0; i <children.getLength(); i++) { if ((children.item(i).getNodeName().equals("senator"))&& ( children.item(i).getAttributes().getNamedItem("status").getNodeValue(). equals("absent"))) { System.out.println( "yes,already found the node which need to be removed!"); Node parent = children.item(i).getParentNode(); parent.removeChild(children.item(i)); System.out.println("yes,already removed!"); }
} |
-- 作者:sharri -- 发布时间:5/11/2005 9:59:00 PM -- 谢谢栖霞旧友!不过这样还是解决不了问题的。你这里用循环只检测了根节点下的第一层子节点,如果我要删除的节点在第二层,程序就不会找到它。而这个程序应该是能够删除任一层的复合该条件的节点,所以我用了递归。我想应该是递归时出的错误。可能我应该避免用递归的方法,但是我想不出别的办法。 |
-- 作者:残墨 -- 发布时间:6/10/2005 11:20:00 AM -- 关注中。 |
-- 作者:zb9030@126.com -- 发布时间:7/22/2005 2:47:00 PM -- 我找一个方法,不用递归找,就可以删除 |
-- 作者:zb9030@126.com -- 发布时间:7/22/2005 2:53:00 PM -- 先用svgDocument.getElementById("删除的ID")得到它的节点,再用getParentNode()得到它的父节点.再用父节点删除它的子节点;这样就不用递归了,效率高好多 |
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
62.500ms |