duanhuo3392 2018-09-05 12:11
浏览 59
已采纳

PHP XMLNode,DOMnode Xpath选择谓词的孙子属性值

I have some xml

<div> First Element
 <div>
  <level3 name="fred">
  </level3>
 </div>
</div>
<div> Second Element
 <div>
  <level3 name="dave">
  </level3>
 </div>
</div>
<div> Third Element
 <div>
  <level3 name="jim">
  </level3>
 </div>
</div>
<div> Fifth Element
 <div>
  <level3 name="mike">
  </level3>
 </div>
</div>

I want to extract the xml (as a string, including the xml tags) from a specific top level div element based in its grandchilds name at level3.

So to get the top div above the level3 node with the name of jim I have been looking at things like:

$sname="jim";
$spath = new DOMXPath($doc);
// Find a div with a child div with a level3 with a matching attribute name. 
$spexp = "//div[./div/level3[contains(@name,\"$sname\")]]";
$story = $spath->evaluate("$spexp");
echo $story->item(0)->nodeValue . "
";

I have tried various combinations - including 'exists' in the predicate which I am sure is basic xslt, but not in PHP(!).

I have googled loads... but predicates going down past the immediate level hasn't come up, and it seems PHP's xpath has its own flavour, so general XPath stuff isn't always useful.

  • 写回答

1条回答 默认 最新

  • duandunzhuo3234 2018-09-05 12:19
    关注

    The XPath was OK, this just removes the first bit inside the first [ as it's not needed.

    To output the XML, you need to use saveXML() with the node you want to export all of the XML tags as well...

    $sname="jim";
    $spath = new DOMXPath($doc);
    // Find a div with a child div with a level3 with a matching attribute name.
    $spexp = "//div[div/level3[contains(@name,\"$sname\")]]";
    $story = $spath->evaluate("$spexp");
    echo $doc->saveXML($story->item(0)). "
    ";
    

    Gives...

    <div> Third Element
     <div>
      <level3 name="jim">
      </level3>
     </div>
    </div>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 PADS Logic 原理图
  • ¥15 PADS Logic 图标
  • ¥15 电脑和power bi环境都是英文如何将日期层次结构转换成英文
  • ¥20 气象站点数据求取中~
  • ¥15 如何获取APP内弹出的网址链接
  • ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了
  • ¥50 STM32单片机传感器读取错误
  • ¥15 (关键词-阻抗匹配,HFSS,RFID标签天线)
  • ¥15 机器人轨迹规划相关问题
  • ¥15 word样式右侧翻页键消失