summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Branson <andrew.branson@cern.ch>2014-03-31 16:18:42 +0200
committerAndrew Branson <andrew.branson@cern.ch>2014-03-31 16:18:42 +0200
commit391c7935ae40f60672b88312b02151c3f941796e (patch)
treeaa90e00d77598ebe50a18bb04b74960bbd242470
parent1d54a4abc26bf03e1c759d47282e79d6485a988a (diff)
Outcome.setFieldByXPath (refs #167)
-rw-r--r--src/main/java/com/c2kernel/persistency/outcome/Outcome.java21
1 files changed, 19 insertions, 2 deletions
diff --git a/src/main/java/com/c2kernel/persistency/outcome/Outcome.java b/src/main/java/com/c2kernel/persistency/outcome/Outcome.java
index f25922c..5604332 100644
--- a/src/main/java/com/c2kernel/persistency/outcome/Outcome.java
+++ b/src/main/java/com/c2kernel/persistency/outcome/Outcome.java
@@ -12,6 +12,7 @@ import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
import org.w3c.dom.Document;
+import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.Text;
import org.w3c.dom.bootstrap.DOMImplementationRegistry;
@@ -118,11 +119,20 @@ public class Outcome implements C2KLocalObject {
}
public void setData(Document data) {
- mData = serialize(data, false);
dom = data;
+ mData = null;
}
+
+ public void setFieldByXPath(String xpath, String data) throws XPathExpressionException {
+ Node field = getNodeByXPath(xpath);
+ field.setNodeValue(data);
+ }
+
public String getData() {
+ if (mData == null && dom != null) {
+ mData = serialize(dom, false);
+ }
return mData;
}
@@ -158,7 +168,7 @@ public class Outcome implements C2KLocalObject {
* @return a DOM Document
*/
public Document getDOM() {
- if (dom == null)
+ if (dom == null && mData != null)
try {
synchronized (parser) {
dom = parser.parse(new InputSource(new StringReader(mData)));
@@ -191,6 +201,13 @@ public class Outcome implements C2KLocalObject {
return (NodeList)expr.evaluate(getDOM(), XPathConstants.NODESET);
}
+
+ public Node getNodeByXPath(String xpathExpr) throws XPathExpressionException {
+
+ XPathExpression expr = xpath.compile(xpathExpr);
+ return (Node)expr.evaluate(getDOM(), XPathConstants.NODE);
+
+ }
static public String serialize(Document doc, boolean prettyPrint)
{