希望将两个xpath in设置为一个,并在diff. array中获取其属性值


want to set two xpath in to one and get there attribute value in diff. array

这是我的reg.xml文件

<childrens>
<child_4 entity_id="4" value="Activities" parent_id="2">
    <child_10066 entity_id="10066" value="Physical1" parent_id="4">
    <child_10067 entity_id="10067" value="Cricket" parent_id="10066">
        <child_10068 entity_id="10068" value="One Day" parent_id="10067"/>
    </child_10067>
    </child_10066>
</child_4>
<child_4331 entity_id="4331" value="Region" parent_id="2">
    <child_5069 entity_id="5069" value="Rajkot" parent_id="4331"/>
</child_4331>
</childrens>


这是我的product.xml:-

<products>
  <product_id value="1">
    <tab_id value="351">
      <tab_name value="test1"/>
      <region_timezone value="1"/>
      <registrationstatus value="2"/>
      <eventstatus value="2"/>
      <dist_activity value="5"/>
      <dist_activity value="10068"/>
      <dist_activity value="10070"/>
      <dist_region value="5069"/>
      <dist_region value="5069"/>
      <dist_region value="5069"/>
    </tab_id>
  </product_id>
  <product_id value="2">
    <tab_id value="352">
      <tab_name value="test2"/>
      <region_timezone value="1"/>
      <registrationstatus value="2"/>
      <eventstatus value="2"/>
      <dist_activity value="5"/>
      <dist_activity value="10069"/>
      <dist_activity value="10070"/>
      <dist_region value="4457"/>
      <dist_region value="7140"/>
      <dist_region value="5069"/>
   </tab_id>
  </product_id>
</products>


试:-

<?php
 $abc= "One Day in Rajkot";
 list($first,$second) = explode(' in ',$abc);
 $text1[]=$first;
 $text2[]=$second;
 foreach($text1 as $event)
{
$event;
}
foreach($text2 as $region1)
{
$region1;
}
$r = file_get_contents('reg.xml');
$p = file_get_contents('product.xml');
$region = simplexml_load_string($r);
$product = simplexml_load_string($p);
list($entity) = $region->xpath("//*[@value='$event']/@entity_id");
$entity=(string)$entity;
list($entity1) = $region->xpath("//*[@value='$region1']/@entity_id");
$entity1=(string)$entity1;
//check the $entity in product.xml
list($prid) = $product->xpath("//*[@value='$entity']/ancestor::product_id/@value");
$prid=(string)$prid;
echo "Event:- $event, Region:- $region1, entity1:- $entity, entity2:- $entity1, Product_id:- $prid";
 ?>

我尝试在数组中传递一个字符串并将其拆分为diffi . array,此值在reg.xml中检查,如果reg.xml具有此值,则到达那里entity_id此id与product.xml匹配,然后从product.xml返回product_id

我的代码工作得很好,但我想在一个

中设置两个xpath
    list($entity) = $region->xpath("//*[@value='$event']/@entity_id");
    $entity=(string)$entity;
    list($entity1) = $region->xpath("//*[@value='$region1']/@entity_id");
    $entity1=(string)$entity1;

我想把这两个路径设置为一个,我尝试这样做:-

list($entity,$entity1) = $region->xpath("//*[@value='$event']and[@value='$region1']/@entity_id");
    $entity=(string)$entity;


请帮我解决这个问题……

您不能像这样将两个谓词与and组合:

[@value='$event']and[@value='$region1']
然而,你可以在谓词内使用or :
[@value='$event' or @value='$region1']

这应该完成这项工作。进一步说明,您可以在

之后使用多个谓词,但是,它们之间没有and这样的操作符:
 [@value='$event' or @value='$region1'][1]

示例:只取第一个