Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带过滤器的xml到php_Php_Xml - Fatal编程技术网

带过滤器的xml到php

带过滤器的xml到php,php,xml,Php,Xml,我有以下xml,我想对其进行筛选,以仅显示来自指定发布者的数据 <?xml version="1.0"?> <books> <book isbn="978-1594489501"> <title>A Thousand Splendid Suns</title> <author>Khaled Hosseini</author> <publisher>Riverhead

我有以下xml,我想对其进行筛选,以仅显示来自指定发布者的数据

    <?xml version="1.0"?>
<books>
  <book isbn="978-1594489501">
    <title>A Thousand Splendid Suns</title>
    <author>Khaled Hosseini</author>
    <publisher>Riverhead Hardcover</publisher>
    <amazon_price>14.27</amazon_price>
  </book>
  <book isbn="978-1594489587">
    <title>The Brief Wondrous Life of Oscar Wao</title>
    <author>Junot Diaz</author>
    <publisher>AB</publisher>
    <amazon_price>14.97</amazon_price>
  </book>
  <book isbn="978-0545010221">
    <title>Harry Potter and the Deathly Hallows</title>
    <author>J. K. Rowling</author>
    <publisher>AB</publisher>
    <amazon_price>19.24</amazon_price>
  </book>
</books>

绚烂千阳
哈立德·侯赛尼
出版社
14.27
奥斯卡·沃短暂而精彩的一生
迪亚斯
AB
14.97
哈利波特与死亡圣器
J.K.罗琳
AB
19.24
我只想将示例publisher AB中的数据放入html表格。

    <?php
// load SimpleXML
$books = new SimpleXMLElement("books.xml);
 $myVar="AB";  
 $books = $s->xpath("//book");
echo <<<EOF
<table style='width: 99%;'>
       <thead>
<tr>

                <th>Title</th>
                <th>Author</th>


       </tr>
</thead>

EOF;
foreach($books as $book) // loop through our books
{
           //if the type of $product books user input (ie $myVar)
       if ($book->type == $myVar) 
       {



        echo <<<EOF
        <tbody>
        <tr>

                <td>{$book->title} </td>
                <td>{$book->author}</td>


      </tr>


EOF;
 }}
 echo '</tbody>';
echo '</table>';
?>

您正在调用
$s->xpath(“//book”)
,但似乎不存在
$s
。我想你是指上面这条线:

$s = new SimpleXMLElement("books.xml");
而不是

$books = new SimpleXMLElement("books.xml");

别忘了你要调用的xpath(//book”)
“(/books.xml”)

,但似乎不存在
$s
。我想你的意思是上面这一行:

$s = new SimpleXMLElement("books.xml");
而不是

$books = new SimpleXMLElement("books.xml");

不要忘记结尾的引号
(“books.xml”)

如果要通过从文件加载数据,必须将第三个参数设置为
true
。否则,作为第一个参数传递的字符串将被解释为“原始”xml数据,即

$x = new SimpleXMLELement('<books><book>....</books>');


代码中还有其他一些错误。例如,您希望测试
元素中的特定值,但您正在测试
if($book->type==$myVar)

在这种情况下,最好将条件放入xpath表达式中

<?php
$doc = new SimpleXMLElement("books.xml", 0, true);
$myVar="AB"; 
$books = $doc->xpath("//book[publisher='$myVar']");
...

如果要通过从文件加载数据,必须将第三个参数设置为
true
。否则,作为第一个参数传递的字符串将被解释为“原始”xml数据,即

$x = new SimpleXMLELement('<books><book>....</books>');


代码中还有其他一些错误。例如,您希望测试
元素中的特定值,但您正在测试
if($book->type==$myVar)

在这种情况下,最好将条件放入xpath表达式中

<?php
$doc = new SimpleXMLElement("books.xml", 0, true);
$myVar="AB"; 
$books = $doc->xpath("//book[publisher='$myVar']");
...

变量$s在字符串
$books=$s->xpath(“//book”)中未定义变量$s在字符串
$books=$s->xpath(“//book”)中未定义