Android 从XML中删除整个记录
我正在尝试使用XPath从XML文件中删除节点及其子节点。这是我试过的,但不起作用 以下是xml:Android 从XML中删除整个记录,android,xml,xpath,nodelist,Android,Xml,Xpath,Nodelist,我正在尝试使用XPath从XML文件中删除节点及其子节点。这是我试过的,但不起作用 以下是xml: <registration> <users> <name>abc</name> <class>10th</class> <email>demo@mail.com</email> </users> </registration> 应该是
<registration>
<users>
<name>abc</name>
<class>10th</class>
<email>demo@mail.com</email>
</users>
</registration>
应该是
cNode.getParentNode().removeChild(cNode);
或
假设A
是nod
的父节点。您当前试图做的是从A
中删除子cNode
,而您想从nod
中删除子cNode
更新
如果要删除整个
记录,则代码可以简单得多。无需手动删除每个子元素
XPath xPath = XPathFactory.newInstance().newXPath();
String expression = "//user[email='" + sEmail + "']";
System.out.println(expression);
Node node = (Node) xPath.compile(expression).evaluate(xmlDocument,XPathConstants.NODE);
if (node != null) node.getParentNode().removeChild(node);
这两种说法都很有效,但问题是它只是删除了abc、第10和第10等文本mail@demo.com,结构未被删除,因此在结果中,iam在删除节点后生成的listview显示空行,而不是delete recordTrue,因为您正试图从这些元素中删除文本节点。请尝试
nod.getParentNode().removeChild(nod)
删除元素。该元素是什么?这不是有效的XML。。。另外,请您澄清您实际想要什么作为输出(即编辑您的问题),这在问题中并不清楚。您的文本看起来像是要删除
元素,但您的代码建议您要删除
、
和
的文本(或元素),现在您正在谈论其他内容。"" . . . . 我会尽力解决这个问题,你对这个问题的回答是rite,谢谢你的时间和帮助。@AdilWaqar在回答你的实际问题之前不需要接受答案。我得到的印象是,您确实想要删除整个
元素。这是正确的吗?比你的代码简单得多,请看我的更新答案。
cNode.getParentNode().removeChild(cNode);
nod.removeChild(cNode);
XPath xPath = XPathFactory.newInstance().newXPath();
String expression = "//user[email='" + sEmail + "']";
System.out.println(expression);
Node node = (Node) xPath.compile(expression).evaluate(xmlDocument,XPathConstants.NODE);
if (node != null) node.getParentNode().removeChild(node);