1

我正在使用 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 代码一起使用。

4

2 回答 2

0

您可以有一个“骨架”表达式并创建一个“可执行实例”。我不知道 PHP,但在 C# 中可以这样完成:

string XpathExpression 
   = string.Format("/products/product[$i]/additional/field[@name='{0}']",
                    myName)
于 2012-10-20T14:12:45.220 回答
0

XPATH 提供了一些运算符,希望您正在使用它们。作为 | 运算符是用于对两个查询进行并集的用户,并且还有一个用于对两个或多个查询进行交集的运算符。

在下面我建议你使用:

$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';
}
于 2012-10-20T17:51:10.497 回答