PHP SimpleXML - One-line solution lookup a key; find its parent in XML file?(PHP SimpleXML-一行解决方案查找键;在XML文件中查找其父项?)
本文介绍了PHP SimpleXML-一行解决方案查找键;在XML文件中查找其父项?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的目标是:首先,在XML文件中找到特定的键。第二,返回密钥的父级。在下面的代码示例中,键是一个文件名。
代码:
<?php
$inputXML = simplexml_load_file("data.xml");
$myProject = lookupProject($inputXML, "file1");
echo $myProject->projectname; //print the name of the project containing <filename>"file1"</filename>
echo "
";
/*
Goal: return the <project> that is the parent of <filename>$input_filename</filename>
Assume: a <filename> appears in at most one <project> subtree.
*/
function lookupProject($myXML, $input_filename)
{
foreach($myXML->project as $curr_project) //notice I don't mention the root <projects></projects>
{
foreach($curr_project->filename as $curr_filename)
{
if ($curr_filename == $input_filename)
{
return $curr_project;
}
}
}
return null; //if not found, return null
}
?>
示例数据文件data.xml
<projects>
<project>
<projectname>project1</projectname>
<filename>file1</filename>
<filename>file2</filename>
</project>
<project>
<projectname>project2</projectname>
<filename>file3</filename>
</project>
</projects>
如果我们有一个更复杂的包含多层子树的XML结构,则查找file1的父级可能需要大量的Foreach()循环。是否有SimpleXML命令可以抽象出lookupProject中出现的循环?
tl;dr有没有短的/优雅的(单行?)实现lookupProject()的解决方案?
请注意,这是homework,但上面的问题根本不是作业问题的症结所在。我已经完成了家庭作业,但知道上面问题的答案会帮助我把答案做得更好。推荐答案
"键"更合适的术语是"TextNode值"。您正在寻找
SimpleXMLElement::xpath
— Runs XPath query on XML data
在您的示例中,此XPath查询将给出项目名称元素
/projects/project[filename="file1"]/projectname
因为这是带标签的家庭作业,所以我将让您自己找出必要的PHP代码。
这篇关于PHP SimpleXML-一行解决方案查找键;在XML文件中查找其父项?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:PHP SimpleXML-一行解决方案查找键;在XML文件中查找其父项?
基础教程推荐
猜你喜欢
- 如何在 PHP 中的请求之间持久化对象 2022-01-01
- 超薄框架REST服务两次获得输出 2022-01-01
- XAMPP 服务器不加载 CSS 文件 2022-01-01
- 在 Woocommerce 中根据运输方式和付款方式添加费用 2021-01-01
- Libpuzzle 索引数百万张图片? 2022-01-01
- 通过 PHP SoapClient 请求发送原始 XML 2021-01-01
- mysqli_insert_id 是否有可能在高流量应用程序中返回 2021-01-01
- 在 PHP 中强制下载文件 - 在 Joomla 框架内 2022-01-01
- 在多维数组中查找最大值 2021-01-01
- WooCommerce 中选定产品类别的自定义产品价格后缀 2021-01-01