PHP 和 XML。使用 PHP 循环 XML 文件

2023-11-29

我现在正陷入 foreach 炼狱中,试图想出一种用 PHP(遵循 XML 文件内容)遍历这个 XML 文件(下面的实际 XML 文本)的方法。 我想做的是:

  1. 获取所有文件夹元素名称
  2. 如果文件夹元素的子文件夹属性为 yes,则向下移动一级并获取该文件夹元素的名称
  3. 如果没有移动到下一个文件夹元素

画廊列表.xml:

<?xml version="1.0" encoding="ISO-8859-1"?>
<gallerylisting exists="yes">
<folder subfolder="yes">
Events
   <folder subfolder="yes">
   Beach_Clean_2010
        <folder subfolder="no">
        Onna_Village
        </folder>
            <folder subfolder="no">
            Sunabe_Sea_Wall
        </folder>
        </folder>
  </folder>
  <folder subfolder="no">
  Food_And_Drink
  </folder>
  <folder subfolder="no">
  Inside
  </folder>
  <folder subfolder="no">
  Location
  </folder>
  <folder subfolder="no">
  NightLife
  </folder>
</gallerylisting>

画廊列表.php

<?php
$xmlref = simplexml_load_file("gallerylisting.xml");
foreach($xmlref->children() as $child) {
    foreach($child->attributes() as $attr => $attrVal) {
        print $child;
        if($attrVal == "yes") {
            foreach($child->children() as $child) {
                echo $child;
                foreach($child->attributes() as $attr => $attrVal) {
                    if($attrVal == "yes") {
                        foreach($child->children() as $child) {
                            echo $child;
                        }
                    }                   
                }
            }
        }
    }
}

我正在...数...5 个 foreach 循环深入到这个 PHP 脚本中,我一点也不喜欢它,另外,如果我的文件夹有另一个子文件夹,我将不得不添加这个相同的子文件夹

$if(attrVal=="yes")...etc.

再次进来,好吧……不!无论如何我可以避免这种情况吗?我是 PHP 新手,尤其是 PHP 和 XML。

谢谢你的帮助。


递归在这里可能对您有益。

<?php

function display_entities( $xml )
{
    foreach($xml->children() as $child) {
        foreach($child->attributes() as $attr => $attrVal) {
            print $child;
            if($attrVal == "yes") {
              display_entities( $child->children() );
            }
        }
    }
}

$xmlref = simplexml_load_file("gallerylisting.xml");

display_entities($xmlref->children());
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP 和 XML。使用 PHP 循环 XML 文件 的相关文章

  • AngularJS 中的 foreach 循环

    我正在经历forEach loop in AngularJS 有几点我不明白 迭代器函数有什么用 没有它还有什么办法吗 如下所示的key和value有何意义 angular forEach scope data function value
  • 在 php 中为类自动生成 getter 和 setter 的最佳方法是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我经常创建一个包含一些私有变量的类 当设置此类的实例时 应该可以使用 getter 和 setter 填充该类的所有变量 有没有一种简单的方法可
  • 如何从父类函数访问子类中定义的常量?

    我从 php net 看到这个例子 但 c MY CONST 仅在 5 3
  • 到 ToList() 还是不到 ToList()?

    给定一个在记忆中 不是 LINQ to SQL 类列表 List
  • 如何使用 php 发送服务器错误响应?

    一旦用户点击删除按钮我的 jQuery 脚本要求服务器删除所选项目 现在我想要我的php发送成功或错误响应的脚本 是否有可能触发错误回调万一该项目无法删除 Thanks 我的 jQuery 代码 ajax type post url myA
  • CDATA 真的有必要吗?

    我经常使用内联 Javascript 通常是在我制作的 WordPress 主题中 我没有听说过将内联 Javascript 包装在 直到几个月前 几年来我一直在以相当的能力水平做这些事情 我用谷歌搜索了一下 听说人们使用它是因为他们的 J
  • 从 .phar 存档中提取文件

    对于 Phar 文件 我完全错过了一些东西 我正在安装一个需要 phpunit pdepend 和其他依赖项的项目 我将它们作为 phar 文件获取 但是 我无法使用命令行工具 php 命令 从中提取文件 我用谷歌搜索了这个问题 但没有发现
  • 交换关联数组中的两个项目

    Example arr array apple gt sweet grapefruit gt bitter pear gt tasty banana gt yellow 我想调换一下柚子和梨的位置 这样数组就变成了 arr array ap
  • PHP 在输入流中使用 fwrite 和 fread

    我正在寻找将 PHP 输入流的内容写入磁盘的最有效方法 而不使用授予 PHP 脚本的大量内存 例如 如果可以上传的最大文件大小为 1 GB 但 PHP 只有 32 MB 内存 define MAX FILE LEN 1073741824 1
  • PHP 脚本可以在终端中运行,但不能在浏览器中运行

    我正在尝试执行exec命令 但我遇到了问题 当我运行以下代码时 当我通过浏览器运行它时它不起作用 但如果我把输出 str将其复制并粘贴到终端中 它工作得很好 造成这种情况的原因是什么 我该如何解决 目前我正在运行localhost php
  • 如何知道Matlab中系统命令执行过程中经过的时间?

    我有一个运行系统脚本的 Matlab 代码 该脚本可能会因命令运行而停止 我想知道是否有一种方法可以让程序知道它是否花费了很长时间并执行其他操作 这是代码 tic status cmdout system iperfcmd The prog
  • 覆盖控制器 Symfony 3.4/4.0

    我目前正在尝试覆盖 FOSUserBundle 中的控制器 在新的文档中 https symfony com doc 3 4 bundles override html https symfony com doc 3 4 bundles o
  • 在 apache docker 容器中运行虚拟主机

    我在同一个 apache 容器中有两个 php 应用程序 我试图在端口上运行其中一个应用程序 因为它需要通过根域而不是子文件夹进行访问 我想在端口 8060 上运行应用程序 我尝试使用 apache 虚拟主机执行此操作 但它不会加载页面 h
  • 如果循环中内存超出,我可以在 for 循环中抛出异常吗?

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如何处理 foreach 循环中发生
  • 表单计算器脚本基本价格未加载 OnLoad

    我的表单中有一个计算器来计算我的下拉选项选择 function select calculate on change calc input type checkbox calculate on click calc function cal
  • CURL 中的 data-urlencode 是什么意思?

    我搜索了很多个小时试图弄清楚 php curl 中的 data urlencode 是什么 我尝试过这个 但我认为这是不对的 xmlpost object1 file https www lob com goblue pdf 在文档中是 d
  • 内部 while 循环不工作

    这是我项目网页上的代码片段 这里我想显示用户选择的类别 然后想显示属于该类别的主题 在那里 用户可以拥有多个类别 这没有问题 我可以在第一个 while 循环中打印所有这些类别 问题是当我尝试打印主题时 结果只显示一行 但每个类别中有更多主
  • 为什么 Composer 降级了我的包?

    php composer phar update这样做了 删除了 2 3 0 软件包并安装了整个 2 2 5 Zend Framework php composer phar update Loading composer reposito
  • 简单的 PHP 表单:电子邮件附件(代码 Golf)

    想象一下 一个用户想要在其网站上放置一个表单 该表单将允许网站访问者上传一个文件和一条简单的消息 该消息将立即通过电子邮件发送 即 该文件未存储在服务器上 或者如果该文件存储在服务器上 仅暂时 作为文件附件 并在邮件正文中添加注释 查看更多
  • 如何使用 PHPExcel 库从 Excel 获取日期

    我正在尝试使用 PHPExcel 从 Excel 获取日期 但我没有得到日期 我得到的字符串值不是 1970 以来的秒数 我尝试过的代码是 InvDate trim excel gt getActiveSheet gt getCell B

随机推荐

  • 当一个对象被取消引用但它的成员对象仍然被引用时会发生什么?

    class ClassA ClassB mem1 new ClassB ClassB mem2 new ClassB class ClassB public class Sample public static void main Stri
  • 通过错误组处理 goroutine 终止和错误处理?

    我试图以这种方式并行读取多个文件 以便每个读取文件的 go 例程将其数据写入该通道 然后有一个 go 例程监听该通道并将数据添加到映射中 这是我的play 下面是剧中的例子 package main import fmt sync func
  • 为什么调用 JFrame.pack() 会添加额外的空间?

    最初 我使用的代码工作正常 但有点复杂 将方法的某些部分移入 JFrame 的构造函数后 一切正常 除了使用 pack 使框架具有适当的尺寸之外的一切 这是原始代码 public class BaseGameFrame extends JF
  • 处理 Spring @RequestParam 的重复值

    我有一个 Spring 3 2 控制器 具有基本的请求映射 例如 RequestMapping action public String action RequestParam param String param do stuff ret
  • HERE API 从不运行批处理作业,始终返回接受状态

    由于某种原因 我的应用程序今天早上停止工作 提交作业后 请求其状态时 仅返回accepted 这是我用来创建和运行作业的代码 url https batch geocoder api here com 6 2 jobs action run
  • 重写原型上内置方法的类型

    默认类型为hasOwnProperty is hasOwnProperty v PropertyKey boolean 然而 这阻止我做这样的事情 const obj a 1 function foo str string if obj h
  • 如何将函数应用于类的所有元素

    我有一个函数 我想将其应用于同一类的多个元素 这是一个滚动页面函数 我只需要它执行一次 所以我把它放在包装纸里 它有效 但我希望能够向元素添加一个类并让它作用于该元素 我尝试迭代元素并使用 addClass 添加一个唯一的类 并将各自的索引
  • 使用 hibernate 进行复杂查询(例如每组前 N 个)的最佳方法

    我现在正在开发一个报告应用程序一段时间 我使用 hibernate 来定义我的查询 然而 我越来越觉得对于报告用例来说这不是最好的方法 查询仅产生部分列 因此不是类型对象 除非你在java中转换所有字段 如果不直接使用 sql 或 总部 我
  • 转换 int -> unsigned long long 是否由标准定义

    我找不到具体的说明int值转换为unsigned long long在标准中 指定了各种类似的转换 如int gt unsigned unsigned gt int 负数则为UB unsigned long long gt int等 例如海
  • Mod_security 有时会阻止我的 ajax 脚本 - 我怎样才能找出原因?

    我使用 php 和 mysql 构建了某种 CMS 应用程序 一切在本地主机上都运行得很好 所以我把它移到了网络上 现在 当有人添加新文章时 我遇到了奇怪的问题 有时它只是正常添加 有时用户会收到此错误 不可接受 所请求资源的适当表示 在此
  • 是否可以从 PropertyGrid 隐藏枚举值?

    我正在与PropertyGrid控制和使用SelectedObject属性来显示数据PropertyGrid 我的网格中的一些属性是枚举类型 我想要做的是向用户隐藏枚举中的一些选择 以下面的示例为例 我想向用户隐藏 Error 的枚举 有没
  • 我们可以通过android中的模拟器发送短信吗?

    我想检查通过模拟器发送到手机的短信 我们可以这样做吗 我不知道是否可以将短信从模拟器发送到设备 但可以将短信从一个模拟器实例发送到另一个模拟器实例 使用模拟器端口号作为接收者电话号码 即 如果模拟器在端口 5444 上运行 则必须使用 54
  • 需要 Handlebars.js 来渲染对象数据而不是“[Object object]”

    我正在使用 Handlebars 模板 并且 JSON 数据已在 Object object 中表示 如何在 Handlebars 之外解析此数据 例如 我尝试通过句柄标签填充页面上的 JavaScript 变量 但这不起作用 有什么建议么
  • 如何以编程方式将 WPF TreeView 绑定到 List

    因此 我对 WPF 非常陌生 并尝试将 Drink 值列表绑定或分配给 wpf 树视图 但不知道如何执行此操作 并且发现很难在网上找到任何不使用 xaml 只显示内容的内容 struct Drink public string Name g
  • PHP Oauth 签名_无效

    我无法理解为什么这不起作用 我真的认为它应该是这样 请帮忙 这是我得到的错误 signature invalid base string GET https 3A 2F 2Fwww google com 2Faccounts 2FOAuth
  • 无法在 R 中初始化 CoreNLP

    我无法访问coreNLP在运行 High Sierra 的 Mac 上用 R 编写 我不确定问题是什么 但似乎每次我再次尝试获取coreNLP工作时 我面临着不同的错误 我有 JDK 9 0 4 请参阅下面的代码 了解我正在尝试执行的操作以
  • CLR 存储过程中的多线程代码?

    多线程 CLR 存储过程可能吗 我有一项数据密集型任务 具有很大的并行化潜力 CLR 存储过程非常适合消除将数据移出进程的开销 但我担心我必须放弃并行计算 我有什么选择 注意 我们使用的是 SQL Server 2005 计划在 4 个月内
  • 如何将 UIView、UIImageView 或 CALayer 动画旋转 360°?

    你如何旋转UIView UIImageView or CALayer不使用 OpenGL ES 进行 360 度动画 import
  • ASP.NET 和 STA COM 对象

    想要在这里解决争论 我读过的关于使用 VB 中从 ASP NET 页面创建的 COM 对象的所有内容都围绕着 警告 请确保安装了 ASPCOMPAT 否则它将无法工作 然而 我已经设置好了 你猜怎么着 没问题 现在 我读到了这个 http
  • PHP 和 XML。使用 PHP 循环 XML 文件

    我现在正陷入 foreach 炼狱中 试图想出一种用 PHP 遵循 XML 文件内容 遍历这个 XML 文件 下面的实际 XML 文本 的方法 我想做的是 获取所有文件夹元素名称 如果文件夹元素的子文件夹属性为 yes 则向下移动一级并获取