Xml Parser by leverging Xpath

 
 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>
.....
 
...


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值