Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从XML中删除整个记录_Android_Xml_Xpath_Nodelist - Fatal编程技术网

Android 从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> 应该是

我正在尝试使用XPath从XML文件中删除节点及其子节点。这是我试过的,但不起作用

以下是xml:

<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);