Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.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
Java从XML文件中删除子项_Java_Xml_Xmldom - Fatal编程技术网

Java从XML文件中删除子项

Java从XML文件中删除子项,java,xml,xmldom,Java,Xml,Xmldom,我想从XML文件中删除一个子文件,当然在修改后保存该文件。 这是我的XML文件: <?xml version="1.0" encoding="UTF-8" standalone="no"?><Customers> <Marker> <title>ABB EMEA</title> </Marker> <Marker> <title>AllScrip

我想从XML文件中删除一个子文件,当然在修改后保存该文件。 这是我的XML文件:

<?xml version="1.0" encoding="UTF-8" standalone="no"?><Customers>
    <Marker>
        <title>ABB EMEA</title>
    </Marker>
    <Marker>
        <title>AllScripts</title>
    </Marker>
    <Marker>
        <title>ARRIS (Motorola)</title>
    </Marker>
    <Marker>
        <title>ARRIS (RWC)</title>
    </Marker>
    <Marker>
        <title>BHS</title>
        <site_location>Weinhammer, Hofhalde, Konstanz, Germany</site_location>
    </Marker>
    <Marker>
        <title>Durst</title>
        <site_location>Brixen, Italy</site_location>
    </Marker>
    <Marker>
        <title>EMEA DEMO</title>
        <site_location>AWS could</site_location>
    </Marker>
    <Marker>
        <title>Harris</title>
    </Marker>

</Customers>

ABB欧洲、中东和非洲
所有脚本
阿里斯(摩托罗拉)
ARRIS(RWC)
行李处理系统
Weinhammer,霍法尔德,康斯坦茨,德国
德斯特
意大利布里森
EMEA演示
AWS可以
哈里斯
我想完全删除具有“标题”-“Durst”的孩子

这是我的密码:

public static void Rebuild_Cords_XML (File ff)
{
    try
    {
        DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
        Document doc = docBuilder.parse(ff);

        NodeList nodes = doc.getElementsByTagName("Marker");
        int x=0;
        for(int i=0;i<nodes.getLength();i++)
        {
            Node nNode = nodes.item(i);

            if (nNode.getNodeType() == Node.ELEMENT_NODE)
            {
                Element eElement = (Element) nNode;
                if(eElement.getElementsByTagName("title").item(0).getTextContent().equals(("Durst")));
                {

                }
            }
        }


     // write the DOM object to the file
        TransformerFactory transformerFactory = TransformerFactory.newInstance();
                    Transformer transformer=null;
                    try {
                        transformer = transformerFactory.newTransformer();
                    } catch (TransformerConfigurationException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    DOMSource domSource = new DOMSource(doc);
                    StreamResult streamResult = new StreamResult(ff);
                    try {
                        transformer.transform(domSource, streamResult);
                    } catch (TransformerException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }


    }
    catch (ParserConfigurationException | IOException | SAXException e) {
        ;}
}
publicstaticvoid-Rebuild\u-Cords\u-XML(文件ff)
{
尝试
{
DocumentBuilderFactory docFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder=docFactory.newDocumentBuilder();
Document doc=docBuilder.parse(ff);
NodeList节点=doc.getElementsByTagName(“标记”);
int x=0;

对于(inti=0;i我不完全确定您要删除什么,所以这里有两种方法

这将删除包含标题durst的整个标记:

        for (int i = 0; i < nodes.getLength(); i++) {
            Node nNode = nodes.item(i);
            if (nNode.getNodeType() == Node.ELEMENT_NODE) {
                Element eElement = (Element) nNode;
                if (eElement.getElementsByTagName("title").item(0).getTextContent().equals(("Durst"))) {
                    nNode.getParentNode().removeChild(nNode);
                }
            }
        }
for(int i=0;i
这将仅删除标记中的标题标记:

        for (int i = 0; i < nodes.getLength(); i++) {
            Node nNode = nodes.item(i);
            if (nNode.getNodeType() == Node.ELEMENT_NODE) {
                Element eElement = (Element) nNode;
                if (eElement.getElementsByTagName("title").item(0).getTextContent().equals(("Durst"))) {
                    nNode.removeChild(eElement.getElementsByTagName("title").item(0));
                }
            }
for(int i=0;i
是否要删除
标记
使
标题
等于Durst?还是仅删除标题标签?我想删除“title”等于“Durst”的标记。非常感谢第一个选项是我需要的。