diff options
| author | Andrew Branson <andrew.branson@cern.ch> | 2014-03-31 16:18:42 +0200 |
|---|---|---|
| committer | Andrew Branson <andrew.branson@cern.ch> | 2014-03-31 16:18:42 +0200 |
| commit | 391c7935ae40f60672b88312b02151c3f941796e (patch) | |
| tree | aa90e00d77598ebe50a18bb04b74960bbd242470 | |
| parent | 1d54a4abc26bf03e1c759d47282e79d6485a988a (diff) | |
Outcome.setFieldByXPath (refs #167)
| -rw-r--r-- | src/main/java/com/c2kernel/persistency/outcome/Outcome.java | 21 |
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)
{
|
