Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
xpath函数语法javascript_Javascript_Xpath - Fatal编程技术网

xpath函数语法javascript

xpath函数语法javascript,javascript,xpath,Javascript,Xpath,我对Xpath非常陌生,虽然它的概念对于长期程序员来说很简单,但我对函数的语法有点困惑。。。。谢谢你的帮助 假设您有一个xml文件(为简单起见,这是southwind.xml的一部分) <Orders> <Order OrderID="10248"> <CustomerID>VINET</CustomerID> <EmployeeID>5</EmployeeID> &l

我对Xpath非常陌生,虽然它的概念对于长期程序员来说很简单,但我对函数的语法有点困惑。。。。谢谢你的帮助

假设您有一个xml文件(为简单起见,这是southwind.xml的一部分)

<Orders>
    <Order OrderID="10248">
        <CustomerID>VINET</CustomerID>
        <EmployeeID>5</EmployeeID>
        <OrderDate>1996-07-04T14:25:55</OrderDate>
        <RequiredDate>1996-08-01T06:43:44</RequiredDate>
        <ShippedDate>1996-07-16T04:00:12</ShippedDate>
        <ShipVia>3</ShipVia>
        <Freight>32.3800</Freight>
        <ShipName>Vins et alcools Chevalier</ShipName>
        <ShipAddress>59 rue de l'Abbaye</ShipAddress>
        <ShipCity>Reims</ShipCity>
        <ShipRegion/>
        <ShipPostalCode>51100</ShipPostalCode>
        <ShipCountry>France</ShipCountry>
        <OrderDetails>
            <OrderDetail>
                <ProductID>11</ProductID>
                <UnitPrice>14.0000</UnitPrice>
                <Quantity>12</Quantity>
                <Discount>0</Discount>
            </OrderDetail>
            <OrderDetail>
                <ProductID>42</ProductID>
                <UnitPrice>9.8000</UnitPrice>
                <Quantity>10</Quantity>
                <Discount>0</Discount>
            </OrderDetail>
            <OrderDetail>
                <ProductID>72</ProductID>
                <UnitPrice>34.8000</UnitPrice>
                <Quantity>5</Quantity>
                <Discount>0</Discount>
            </OrderDetail>
        </OrderDetails>
    </Order>
    <Order OrderID="10249">
        <CustomerID>TOMSP</CustomerID>
        <EmployeeID>6</EmployeeID>
        <OrderDate>1996-07-05T06:39:18</OrderDate>
        <RequiredDate>1996-08-16T03:39:38</RequiredDate>
        <ShippedDate>1996-07-10T14:39:39</ShippedDate>
        <ShipVia>1</ShipVia>
        <Freight>11.6100</Freight>
        <ShipName>Toms Spezialitäten</ShipName>
        <ShipAddress>Luisenstr. 48</ShipAddress>
        <ShipCity>Münster</ShipCity>
        <ShipRegion/>
        <ShipPostalCode>44087</ShipPostalCode>
        <ShipCountry>Germany</ShipCountry>
        <OrderDetails>
            <OrderDetail>
                <ProductID>14</ProductID>
                <UnitPrice>18.6000</UnitPrice>
                <Quantity>9</Quantity>
                <Discount>0</Discount>
            </OrderDetail>
            <OrderDetail>
                <ProductID>51</ProductID>
                <UnitPrice>42.4000</UnitPrice>
                <Quantity>40</Quantity>
                <Discount>0</Discount>
            </OrderDetail>
        </OrderDetails>
    </Order>

提前感谢您使用
文档。选择节点
(IE)或
文档。评估
(Chrome、Firefox、Opera、Safari)功能。您将在此处找到使用它们的方法:

Mozilla还在此处提供了有用的文档:

下面是如何使用
文档对每篇文章的数量求和。评估

// retrieves xml document
var xhttp = new XMLHttpRequest();
xhttp.open("GET", "southwind.xml", false);
xhttp.send("");
var xml = xhttp.responseXML;

// evaluates xpath expressions
var orders = xml.evaluate("//Order", xml, null, XPathResult.ANY_TYPE, null);
var order = orders.iterateNext();
while (order) {

  var result = xml.evaluate("sum(OrderDetails//Quantity)", order, null,
    XPathResult.NUMBER_TYPE, null);
  console.log(result.numberValue);
  order = orders.iterateNext();
}

首先,XML需要关闭根节点的标记。(

这段javascript代码使用XPath sum函数在firefox中工作,它返回76,这是XML中所有数量标记的总和。我希望这有助于:

<script>
var xml=document.implementation.createDocument('', 'doc', null);
xml.load('books.xml');
path='sum(/Orders/Order/OrderDetails/OrderDetail/Quantity)';
var result=xml.evaluate(path, xml, null, XPathResult.ANY_TYPE, null);
document.write(result.numberValue);
</script> 

var xml=document.implementation.createDocument(“”,'doc',null);
load('books.xml');
path='sum(/Orders/Order/OrderDetails/OrderDetails/Quantity)';
var result=xml.evaluate(路径,xml,null,XPathResult.ANY_类型,null);
document.write(result.numberValue);

您可以找到XPath函数。这是一个很好的例子。

只是为了跟进。。。如果您将Xpath与Javascript一起使用,这完全可以归结为XpathResult。。。所以我找到了这个网站,它回答了我之前的后续问题,以防其他人有它。。。 再次感谢

您正在使用哪个XPath库?另一个想法;关于Xpath中使用的属性,是否有其他编程语言的列表,或者我正在寻找更多的Javascript和Xpath?换句话说,property.numberValue是您调用的Javascript属性还是Xpath属性?例如,如果使用string-length()函数,那么获取字符串长度值的属性是什么?
numberValue
是W3C DOM XPath API定义的
XPathResult
接口的属性,请参阅。您可以在Mozilla、Opera、Chrome等浏览器中将该API与Javascript结合使用,但在Java世界中也有该API的实现,请参阅。
<script>
var xml=document.implementation.createDocument('', 'doc', null);
xml.load('books.xml');
path='sum(/Orders/Order/OrderDetails/OrderDetail/Quantity)';
var result=xml.evaluate(path, xml, null, XPathResult.ANY_TYPE, null);
document.write(result.numberValue);
</script>