带过滤器的xml到php
我有以下xml,我想对其进行筛选,以仅显示来自指定发布者的数据带过滤器的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 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”)中未定义代码>