我已经加载了一个xml文件,并且在子节点存在时我想要一个特定的节点。
例如:如果supplierItem-> supplier-> id为" 0101"我想得到股票" 1"超出此特定供应商项目。所以我需要特定供应商ID的父库存节点。
我的xml看起来像这样
<product>
<supplierItem>
<id>0001</id>
<supplier>
<id>0101</id>
<name>Company_1</name>
</supplier>
<supplierItemId>Product_1_ID</supplierItemId>
<productName>Product_1</productName>
<stock>1</stock>
</supplierItem>
<id>0002</id>
<supplier>
<id>0202</id>
<name>Company_2</name>
</supplier>
<supplierItemId>Product_1_ID</supplierItemId>
<productName>Product_1</productName>
<stock>2</stock>
</supplierItem>
<id>0003</id>
<supplier>
<id>0303</id>
<name>Company_3</name>
</supplier>
<supplierItemId>Product_1_ID</supplierItemId>
<productName>Product_1</productName>
<stock>3</stock>
</supplierItem>
</product>
我的第一次尝试是:
$stocks = $xml->xpath("/product/supplierItem");
foreach ($stocks as $stock)
{
echo($stock); // get all stocks
}
有什么想法吗?我坚持了...... 提前致谢
答案 0 :(得分:0)
您需要阅读有关Xpath的信息。它可以轻松地做到这一点:
获取supplierItem
个节点...
/product/supplierItem
...使用子节点id
...
/product/supplierItem[id]
...等于'0101'......
/product/supplierItem[id = "0101"]
...并从中获取stock
元素节点:
/product/supplierItem[id = "0101"]/stock
SimpleXMLElement::xpath()
只能返回节点数组,但Xpath本身甚至可以直接获取值。在PHP中DOMXpath::evaluate()
:
$stock = $domXpath->evaluate('string(/product/supplierItem[id = "0101"]/stock)')