File jarFile = new File(getClass().getProtectionDomain().getCodeSource().getLocation().getPath());
int ind = jarFile.getPath().lastIndexOf("aggregationengine");
if (ind > 0) {
String projectPath = jarFile.getPath().substring(0, ind);
DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
domFactory.setNamespaceAware(true); // never forget this!
DocumentBuilder builder = domFactory.newDocumentBuilder();
org.w3c.dom.Document doc = builder.parse(new File(projectPath+ "rules\\storage\\agg_odbNodeServer_availableCompute.xml"));
XPathFactory factory = XPathFactory.newInstance();
XPath xpath = factory.newXPath();
XPathExpression expr
= xpath.compile("//opt/agg/script");
Object result = expr.evaluate(doc, XPathConstants.NODESET);
com.sun.org.apache.xml.internal.dtm.ref.DTMNodeList nodes = (com.sun.org.apache.xml.internal.dtm.ref.DTMNodeList) result;
System.out.println(nodes.getDTMIterator().toString());
<aggregation xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="../../schemas/aggregation-rule.xsd">
<name>agg_odbNodeServer_availableCompute</name>
<description>
Aggregates min(MaxCapacity, request.capacityperfaultdomain) - (usedCapacity+reservedCapacity)/ request.capacitypercompute
</description>
<opt class="Node::Server">
<agg name="availablecompute" oper="script">
<script type="integer">
<![CDATA[
function perform() {
var capacityperfaultdomain = exValues["capacityperfaultdomain"];
var actualmaxcapacity = Math.min(capacityperfaultdomain, odbValues["maxcapacity"]);
var totalcapacity = capacityperfaultdomain - odbValues["usedcapacity"] - odbValues["reservedcapacity"];
return Math.floor(totalcapacity / exValues["capacitypercompute"]);
}
perform();
]]>
</script>
.....
...