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の2番目のコードで動作しています。

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 はいくつかの演算子を提供しますが、それらを使用していることを願っています。として | operator は 2 つのクエリの結合を取るためのユーザーであり、2 つ以上のクエリの交差を取るための演算子もあります。

ここでは、次の使用をお勧めします。

$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 に答える