繁体   English   中英

使用xpath在PHP中查询XML

[英]Using xpath to query XML in PHP

我第一次使用xpath来查询xml文档中的值并返回相应的名称值。 我一直在阅读有关该主题的大量不同资源,但似乎无法正确输出。 这是我的XML

<?xml version="1.0" encoding="utf-8"?>
<books>
  <book>
    <name>Genesis</name>
    <abrv>GEN</abrv>
    <title>The First Book of Moses</title>
  </book>
  <book>
    <name>Exodus</name>
    <abrv>EXO</abrv>
    <title>The Second Book of Moses</title>
  </book>
  <book>
    <name>Leviticus</name>
    <abrv>LEV</abrv>
    <title>The Third Book of Moses</title>
  </book>
</books>

这是我的PHP / HTML

<?php $root = $_SERVER['DOCUMENT_ROOT'] . "/";
$bookID = 'GEN';
$xml = simplexml_load_file( $root . 'assets/xml/books.xml' ) or die( "No Page Data Found" );
$bookName = $xml->xpath( '//book[abrv="'.$bookID.'"]/name' );
?>
<article id="verseOfDay">
  <div class="container">
    <h2>verse of the day</h2>
    <h6><?php echo $bookName; ?></h6> // Line 19
    <p></p>
  </div>
</article>

最后,这是我收到的通知:

注意:要在/HOME/#####/MYWEBSITE.COM/ASSETS/INCLUDES/VERSEOFTHEDAY.PHP在第19行上进行字符串转换

我究竟做错了什么? 在此示例中,我希望它在标签中输出Genesis。

SimpleXML xpath函数返回结果数组,如果未找到结果,则该数组为空。 因此,您需要检查一下,如果得到结果,它将位于$bookName[0] 这样的事情会起作用:

$bookNames = $xml->xpath( '//book[abrv="'.$bookID.'"]/name' );
$bookName = empty($bookNames) ? 'Not Found' : $bookNames[0];
?>
<article id="verseOfDay">
  <div class="container">
    <h2>verse of the day</h2>
    <h6><?php echo $bookName; ?></h6>
    <p></p>
  </div>
</article>

3v4l.org上的演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM