我正在使用PHP在XPATH中工作。我是通过硬编码完成的。但我做了很多谷歌搜索使xpath查询动态。是否有任何解决方案使xpath查询动态化?
我有以下xml代码:
<information>
<field name="secondtitle">ABCt</field>
<field name="author">XYZ</field>
<field name="ISBN">9780712617611</field>
<field name="publisher">abc</field>
</information>
其他文件的数据如下:
<information>
<field name="deliveryCosts">1.95</field>
<field name="deliveryTime">3 - 5 Werkdagen</field>
<field name="EAN">9789021142523</field>
<field name="ISBN">9789021142539</field>
<field name="subcategories">abc</field>
<field name="auteur">IJK</field>
<field name="type">xyz</field>
</information>
现在尝试在单个php文件中访问它们时,只有属性不同。但我的所有查询都是硬编码的,但我想动态访问它们。
以下是我的硬编码的PHP代码:
$auth = $xml->xpath("/products/product[$i]/additional/field[@name='auteur']");
$type = $xml->xpath("/products/product[$i]/additional/field[@name='type']");
foreach($auth as $au)
{
foreach($type as $ty)
{
echo $au = mysql_real_escape_string($au);
echo $ty = mysql_real_escape_string($ty);
}}
此代码正在使用我上面粘贴的第二个xml代码。
答案 0 :(得分:0)
您可以拥有“骨架”表达式并创建“可执行实例”。我不懂PHP,但在C#中可以这样做:
string XpathExpression
= string.Format("/products/product[$i]/additional/field[@name='{0}']",
myName)
答案 1 :(得分:0)
XPATH为某些操作员提供了希望您正在使用它们。作为| operator是用于获取两个查询的并集的用户,并且还有一个运算符用于获取两个或更多个查询的交集。
以下我建议您使用:
$auth = $xml->xpath("/products/product[$i]/additional/field[@name='auteur' or @name='author']");
foreach($auth as $au)
{
foreach($type as $ty)
{
echo $au = mysql_real_escape_string($au);
}}
如果作者在这里工作,并且对于产品类型的问题,请遵循以下代码。
$type = $xml->xpath("/products/product[$i]/additional/field[@name='type']");
if(!empty($type ))
{
echo 'the node is available';
}
else
{
echo 'the node is not available';
}