XModifier { private void create(Node parent, XModifyNode node) throws XPathExpressionException { Node newNode; if (node.isAttributeModifier()) { createAttributeByXPath(parent, node.getCurNode().substring(1), node.getValue()); } else { if (node.isRootNode()) { newNode = parent; boolean canMoveToNext = node.moveNext(); if (!canMoveToNext) { newNode.setTextContent(node.getValue()); } else { create(newNode, node); } } else if (node.getCurNode().equals("text()")) { parent.setTextContent(node.getValue()); } else { findOrCreateElement(parent, node); } } } XModifier(Document document); void setNamespace(String prefix, String url); void addModify(String xPath, String value); void addModify(String xPath); void modify();  }
@Test public void create() throws ParserConfigurationException, IOException, SAXException { Document document = createDocument(); Document documentExpected = readDocument("createExpected.xml"); XModifier modifier = new XModifier(document); modifier.setNamespace("ns", "http: modifier.addModify("/ns:root/ns:element1"); modifier.addModify("/ns:root/ns:element2[@attr=1]"); modifier.addModify("/ns:root/ns:element1/ns:element11"); modifier.addModify("/ns:root/ns:element3", "TEXT"); modifier.modify(); assertXmlEquals(documentExpected, document); }