Hi;
 
Element.createCopy() is not handling XPath as I would expect - it won't accept a "/base" as an argument - it requires "./base"
 
The code:
 
public class Dom4jTest {
 
 public static void main(String[] args) throws DocumentException {
 
  System.out.println("starting");
 
  Document document = DocumentHelper.parseText("<root><first><last>dave</last></first></root>");
  System.out.println("document = " + document);
 
  Node node = document.selectSingleNode("/root/first");
  System.out.println("node = " + node);
  System.out.println("str = " + node.valueOf("/root/first/last"));
 
  Element elem = (Element) node;
  System.out.println("elem = " + elem);
 
  elem = elem.createCopy();
  System.out.println("new elem = " + elem);
  System.out.println("new parent = " + elem.getParent());
  System.out.println("str = " + elem.valueOf("/last"));
  System.out.println("str = " + elem.valueOf("./last"));
 
  System.out.println("all done");
 }
}
 
produces:
starting
document = [EMAIL PROTECTED] [Document: name null]
node = [EMAIL PROTECTED] [Element: <first attributes: []/>]
str = dave
elem = [EMAIL PROTECTED] [Element: <first attributes: []/>]
new elem = [EMAIL PROTECTED] [Element: <first attributes: []/>]
new parent = null
str =                             <*************** this should return dave!!!!!
str = dave
all done
 
help - thanks - dave
 

Reply via email to