DocumentBuilder builder = parserFactory.newDocumentBuilder();
document = builder.parse(file.getAbsolutePath());
System.setProperty("org.xmldb.common.xml.queries.XPathQueryFactory",
"org.xmldb.common.xml.queries.xalan2.XPathQueryFactoryImpl");
XPathQuery xpath = XPathQueryFactory.newInstance().newXPathQuery();
XUpdateQuery xq = new XUpdateQueryImpl();
String editSelect = null;
String insertSelect = null;
Enumeration params = request.getParameterNames();
while (params.hasMoreElements()) {
String pname = (String) params.nextElement();
getLogger().debug("Parameter: " + pname + " ("
+ request.getParameter(pname) + ")");
// Extract the xpath to edit
if (editSelect == null && pname.indexOf("edit[") >= 0
&& pname.endsWith("].x")) {
editSelect = pname.substring(5, pname.length() - 3);
getLogger().debug("Edit: " + editSelect);
}
// Make sure we are dealing with an xupdate statement,
// else skip
if (pname.indexOf("<xupdate:") == 0) {
String select = pname.substring(pname.indexOf("select") + 8);
select = select.substring(0, select.indexOf("\""));
getLogger().debug(".act() Select Node: " + select);
// Check if node exists
xpath.setQString(select);
XObject result = xpath.execute(document);
NodeList selectionNodeList = result.nodeset();
if (selectionNodeList.getLength() == 0) {
getLogger()
.debug(".act(): Node does not exist (might have been deleted during update): "
+ select);