php – 如何编辑我的代码以回显在XMLReader中找到我的搜索词的子元素的数据?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – 如何编辑我的代码以回显在XMLReader中找到我的搜索词的子元素的数据?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2373字,纯文字阅读大概需要4分钟。
内容图文
![php – 如何编辑我的代码以回显在XMLReader中找到我的搜索词的子元素的数据?](/upload/InfoBanner/zyjiaocheng/707/001ca2efab18410a9d57900b9a51f160.jpg)
我是XMLReader的新手,我觉得很难找到教程/代码或者先进的东西来获取示例.
我的问题是我如何转换现在的代码,所以如果我搜索(通过表单),jQuery这个术语将让我有机会输出< info>< / info>的值.每个< name>< / name>中的(以及后来的其他元素)那是在?
这是输出书籍名称的代码.
<?php
$reader = new XMLReader();
$reader->open("books.xml");
while ($reader->read()) {
switch ($reader->nodeType) {
case (XMLREADER::ELEMENT):
if ($reader->localName == "name") {
$reader->read();
echo $reader->value;
break;
}}}
?>
xml文件
<?xml version="1.0" encoding="ISO-8859-1"?>
<library>
<book isbn="781">
<name>SCJP 1.5</name>
<info>Sun Certified Java Programmer book</info>
</book>
<book isbn="194">
<name>jQuery is Awesome!</name>
<info>jQuery Reference Book</info>
</book>
<book isbn="199">
<name>jQuery 101</name>
<info>All you need to know about jQuery</info>
</book>
</library>
解决方法:
如果您已经绑定到XMLReader进行顺序解析,那么您可以基于它构建一些解析器.
简化解析操作的一种方法是将其封装到迭代器中,尤其是在处理序列时.例如,使用名为XMLBookIterator的迭代器,您可以在解析数据时覆盖所有书籍:
$books = new XMLBookIterator($file);
foreach($books as $key => $book)
{
echo 'book (', $key, '):', "\n";
print_r($book);
}
结果可能与您的示例数据一样:
book (0):
stdClass Object
(
[isbn] => 781
[name] => SCJP 1.5
[info] => Sun Certified Java Programmer book
)
book (1):
stdClass Object
(
[isbn] => 194
[name] => jQuery is Awesome!
[info] => jQuery Reference Book
)
book (2):
stdClass Object
(
[isbn] => 199
[name] => jQuery 101
[info] => All you need to know about jQuery
)
然后,它只会根据您的条款过滤书籍.这可以实现到FilterIterator中,我们称之为BookFilterIterator:
$filtered = new BookFilterIterator($books, 'jQuery');
foreach($filtered as $key => $book)
{
echo 'book (', $key, '):', "\n";
print_r($book);
}
然后输出将减少到匹配的书籍:
book (1):
stdClass Object
(
[isbn] => 194
[name] => jQuery is Awesome!
[info] => jQuery Reference Book
)
book (2):
stdClass Object
(
[isbn] => 199
[name] => jQuery 101
[info] => All you need to know about jQuery
)
唯一剩下的就是执行此操作的实际代码.它有点长,在它的核心 – 迭代器中的next()函数,你会发现一个基于状态的解析器正在读取你已经在问题中开始的XML.不同之处在于,它具有某种状态,有助于填充当前的书籍条目,该条目存储为该类的私人成员.
演示代码使用XML作为字符串,然后通过$file =’data:// text / plain; base64,’.base64_encode($xml);将其转换为伪“文件”.迭代器适用于任何文件名,它只是传递给XMLReader,因此对于大数据,请使用文件.
内容总结
以上是互联网集市为您收集整理的php – 如何编辑我的代码以回显在XMLReader中找到我的搜索词的子元素的数据?全部内容,希望文章能够帮你解决php – 如何编辑我的代码以回显在XMLReader中找到我的搜索词的子元素的数据?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。