1. removeChild must be called on a direct parent
2. you cannot just add a node from one document to another document, you need to use importNodesee the errors withcatch (Exception ex)
{
ex.printStackTrace();
}
2. you cannot just add a node from one document to another document, you need to use importNodesee the errors withcatch (Exception ex)
{
ex.printStackTrace();
}
at org.apache.crimson.tree.ParentNode.removeChild(ParentNode.java:500)
at test.UpdateDocument.main(UpdateDocument.java:64)能否解决这个问题?程序清单如下:package test;
import java.io.*;
import java.sql.*;
import java.util.*;import org.w3c.dom.*;
import javax.xml.parsers.*;import javax.xml.transform.*;
import javax.xml.transform.dom.*;
import javax.xml.transform.stream.*;
public class UpdateDocument
{
public static void main(String[] args)
{
Document dataDoc = null;
Element dataRoot = null; Document oDoc = null;
Element oRoot = null; Document updateDoc = null;
Element updateRoot = null;
try
{
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = dbFactory.newDocumentBuilder();
// dataDoc
// {
dataDoc = docBuilder.newDocument();
dataRoot = dataDoc.createElement("root");
Element aNode = dataDoc.createElement("AAA");
Element bNode = dataDoc.createElement("BBB");
dataRoot.appendChild(aNode);
dataRoot.appendChild(bNode);
dataDoc.appendChild(dataRoot);
// }
// updateDoc
// {
updateDoc = docBuilder.newDocument();
updateRoot = updateDoc.createElement("CCC");
updateDoc.appendChild(updateRoot);
// }
// oDoc
// {
oDoc = docBuilder.newDocument();
oRoot = oDoc.createElement("AAA");
oDoc.appendChild(oRoot);
// }
dataRoot.removeChild(dataDoc.importNode(oRoot,true));
dataRoot.appendChild(dataDoc.importNode(updateRoot,true));
System.out.println(dataDoc.getDocumentElement().toString());
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
}
dataRoot.appendChild(dataDoc.importNode(updateRoot,true));
===>
dataRoot.removeChild(aNode);
dataRoot.appendChild(updateDoc.importNode(updateRoot,true));
import java.io.*;
import java.sql.*;
import java.util.*;import org.w3c.dom.*;
import javax.xml.parsers.*;import javax.xml.transform.*;
import javax.xml.transform.dom.*;
import javax.xml.transform.stream.*;
public class UpdateDocument
{
public static void main(String[] args)
{
Document dataDoc = null;
Element dataRoot = null; Document oDoc = null;
Element oRoot = null; Document updateDoc = null;
Element updateRoot = null;
try
{
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = dbFactory.newDocumentBuilder();
// dataDoc
// {
dataDoc = docBuilder.newDocument();
dataRoot = dataDoc.createElement("root");
Element aNode = dataDoc.createElement("AAA");
Element bNode = dataDoc.createElement("BBB");
dataRoot.appendChild(aNode);
dataRoot.appendChild(bNode);
dataDoc.appendChild(dataRoot);
// }
// updateDoc
// {
updateDoc = docBuilder.newDocument();
updateRoot = updateDoc.createElement("CCC");
updateDoc.appendChild(updateRoot);
// }
// oDoc
// {
oDoc = docBuilder.newDocument();
oRoot = oDoc.createElement("AAA");
oDoc.appendChild(oRoot);
// }
String name = oRoot.getTagName();
NodeList nl = dataDoc.getElementsByTagName(name);
Node node = nl.item(0);
dataRoot.removeChild(node);
dataRoot.appendChild(dataDoc.importNode(updateRoot,true));
System.out.println(dataDoc.getDocumentElement().toString());
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
}