これが私のコードです:
private NodeList union(NodeList left, NodeList right){
NodeList result=null;
try{
DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
domFactory.setNamespaceAware(true); // never forget this!
DocumentBuilder newBuilder = domFactory.newDocumentBuilder();
Document newDoc = newBuilder.newDocument();
Element root = newDoc.createElement("root");
newDoc.appendChild(root);
if(left!=null){
for(int i=0;i<left.getLength();i++){
Node tmp=(Node)left.item(i).cloneNode(true);
newDoc.adoptNode(tmp);
newDoc.getDocumentElement().appendChild(tmp);
//root.appendChild(newDoc.importNode((Node)left.item(i), true));
}
}
if(right!=null){
for(int i=0;i<right.getLength();i++){
Node tmp=(Node)right.item(i).cloneNode(true);
newDoc.adoptNode(tmp);
newDoc.getDocumentElement().appendChild(tmp);
//root.appendChild(newDoc.importNode((Node)right.item(i), true));
}
}
result=root.getChildNodes();
} catch(ParserConfigurationException e){
System.err.println(e);
}
return result;
}
このコードでは、2 つの NodeList を 1 つに統合しようとしています。
結合後、ノードは親、先祖、前の兄弟などのコンテキストを失うという事実を除いて、うまく機能します...したがって、結果に対して評価を実行し、親/アンセクター/前の兄弟を使用しようとしている場合結果の /etc 軸、失敗します。
彼らがそれを失わないようにするにはどうすればよいですか?
ありがとう。