PHP - 简单 XML - 嵌套层次结构

2023-12-24

我一直在使用 PHP 的简单 XML 函数来处理 XML 文件。

下面的代码适用于简单的 XML 层次结构:

$xml = simplexml_load_file("test.xml");

echo $xml->getName() . "<br />";

foreach($xml->children() as $child)
{
    echo $child->getName() . ": " . $child . "<br />";
}

假设 XML 文档的结构如下:

<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
    <to>Tove</to>
    <from>Jani</from>
    <heading>Reminder</heading>
    <body>Don't forget me this weekend!</body>
</note>

但是,如果我的 XML 文档中有更复杂的结构 - 内容就不会输出。更复杂的 XML 示例如下所示:

<note>
    <noteproperties>
        <notetype>
            TEST
        </notetype>
    </noteproperties>
    <to>Tove</to>
    <from>Jani</from>
    <heading>Reminder</heading>
    <body>Don't forget me this weekend!</body>
</note>

我需要处理深度不定的 XML 文件 - 谁能建议一种方法?


那是因为你需要再往下走一个层次<noteproperties>

检查一下,示例来自SimpleXMLElement::children http://www.php.net/manual/en/simplexmlelement.children.php:

$xml = new SimpleXMLElement(
'<person>
     <child role="son">
         <child role="daughter"/>
     </child>
     <child role="daughter">
         <child role="son">
             <child role="son"/>
         </child>
     </child>
 </person>');

foreach ($xml->children() as $second_gen) {
    echo ' The person begot a ' . $second_gen['role'];

    foreach ($second_gen->children() as $third_gen) {
        echo ' who begot a ' . $third_gen['role'] . ';';

        foreach ($third_gen->children() as $fourth_gen) {
            echo ' and that ' . $third_gen['role'] .
                ' begot a ' . $fourth_gen['role'];
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP - 简单 XML - 嵌套层次结构 的相关文章

  • CodeIgniter加入选择为

    我的数据库中有 2 个表需要加入 一张表是 artikelen 表 另一张表是 Collections 表 我目前有 this gt db gt select this gt db gt from collecties this gt db
  • php / phpDoc - @return $this 类的实例?

    如何在 phpDoc 中将方法标记为 返回当前类的实例 在下面的示例中 我的 IDE Netbeans 将看到 setSomething 始终返回foo object 但如果我扩展对象 情况就不是这样了 它会返回 this 在第二个示例中是
  • 测试 CodeIgniter 会话变量的正确方法是什么?

    获取以下代码片段 测试确保会话变量不为空的最佳方法是什么 如果稍后在我的脚本中 我调用以下内容 第一个打印正确 但在第二个我收到消息 未定义的变量 已登录 我尝试过使用 empty and isset 但两者均未成功 我还尝试使用向后执行
  • 在方法/数据成员中向 WCF 添加限制

    我是 WCF 新手 我尝试对数据成员添加限制 例如在这个方法中 DataMember public string StringValue get return stringValue set stringValue value 我想设置最大
  • 确定 PHP 到目前为止执行了多长时间

    我需要确定 PHP 函数到目前为止已经运行了多长时间 有哪些选项可以确定某些 PHP 代码的运行时间 我正在使用 zend 框架 Call microtime true 函数以毫秒分辨率获取当前时间
  • Symfony/Doctrine 重新排列数据库列

    当我使用doctrine schema update命令行生成表时 Doctrine 或Symfony 似乎想要添加一个命令来重新排列我的列 将键放在它出现的前面 我想知道是否 更希望在哪里 我可以禁用环境的这个 功能 所以当我去生成我的表
  • AJAX 安全问题

    我希望能够解决一些关于 AJAX 安全性的问题 这是我试图理解的一个场景 假设我正在使用 AJAX 向页面请求一些半敏感材料 例如 我将把用户的 ID 传递给一个 php 文件 并返回一些关于他们自己的信息 现在 是什么阻止人们模拟此 Ja
  • 即使使用 标记,XSL 也会忽略我的空格

    我在 XSL 代码中创建一个标头 其中包含多个信息字段 即 姓名 Bob 出生日期 1900 年 1 月 1 日 等 我将它们包含在标签中 如下所示
  • 如何保留标记?

    我有一个包含新闻报道的 XML 文档 并且新闻报道的 body 元素在纯文本中包含 p 标签 当我使用 XSL 检索正文时 例如
  • Android:java.lang.OutOfMemoryError:

    我在 Android 上开发了一个使用大量图像的应用程序 可绘制文件夹中有很多图像 比如说超过 100 张 我正在开发图像动画应用程序 我使用 imageview 来显示 GIF 图像 我使用了将 gif 图像分割成多个 PNG 格式图像的
  • SQL 查询结果为字符串(或变量)

    是否可以将SQL查询结果输出到一个字符串或变量中 我的php和mysql不好 假设我有数据库 agents 其中包含列 agent id agent fname agent lname agent dept 使用此查询 sql SELECT
  • 如何通过开始索引和结束索引提取子字符串?

    str HelloWorld sub substr str 3 5 echo sub prints loWor 我知道 substr 采用第一个参数 第二个参数是开始索引 而第三个参数是要提取的子字符串长度 我需要的是通过提取子字符串起始索
  • POSTed 数组保留其值

    今天 我注意到我的一个 WordPress 安装的行为方式非常奇怪 每当我从仪表板更新帖子时 它的一些额外输入都会保留它们已有的值 所有这些都是多维数组 例如 post php post 123 action 编辑
  • 多维数组 PHP 内爆 [重复]

    这个问题在这里已经有答案了 就我的数据结构而言 我有一个 communications 数组 每个 communications id 本身包含三部分信息 id score 和 content 我想内爆这个数组以获得逗号分隔的 id 列表
  • Yii2 组件将数据传递给 __construct

    我有一个库 我想将其用作组件 在配置文件中我这样设置 components gt superLib gt class gt SuperLib construct gt first second Maybe Yii 2 have proper
  • 从 $i 获取值,顺序被打乱

    for i 0 i lt count name i some output ommited td td
  • 无法访问 WordPress 中声明的全局变量

    我有以下代码 g value something print g value function get value global g value print g value print get value 当我在独立的 PHP 脚本中运行它
  • 为什么 0.5 mod 0.1 在不同的编程语言中结果不同?

    我有一个关于模数的问题 模运算求一个数除以另一个数的余数 我原本期望 0 5 0 1 0 的结果 但是当我在 PHP 或 net 中运行它时 我得到 0 1 我运行的 php 代码是 var dump fmod 0 5 0 1 在 net中
  • 如何缩短 PHP if 语句?

    我有一个 if 语句 我需要将单个字符串与许多不同的选项进行比较 我在下面发布的代码非常清楚地表明了我的意思 我知道有两种方法可以做到这一点 但另一种甚至更长 那么 是否有任何函数可以以更短的方式实现类似的功能 我的要求可能看起来很愚蠢 但
  • mysql_query 保留返回时在表中创建的数据类型?

    我在mysql中有一个表 CREATE TABLE user id INT name VARCHAR 250 我查询表 result mysql query SELECT id name FROM user 我收集结果 while row

随机推荐

  • 使用javascript查找字符串中最长的单词

    我试图找到字符串中最长的单词 但它不断返回第一个单词的长度 有任何想法吗 这是我的代码 function findLongestWord str var words str split var longest 0 for var i 0 i
  • 如何在 Angular 5 指令中使用 exportAs 来获取模板中的引用?

    我有以下指令 Directive selector changeColor exportAs changeColor export class ColorDirective constructor elem ElementRef rende
  • Android with Retrofit2 OkHttp3 - 多部分 POST 错误

    我在 Android 上使用 Retrofit2 和 OkHttp 进行 HTTP 请求 这里我正在做一个带有文档上传的 POST 请求 我遇到了以下错误 D OkHttp lt 500 Server Error http api driv
  • C# Regex.Match 大括号-仅内容? (不包括大括号)

    我一直无法找到答案 我可以使用Regex Matches方法只返回contents带有大括号的项目 如果我使用正则表达式 my MatchCollection值包括大括号 我想匹配 但只返回内容 这是我到目前为止所拥有的 Regex reg
  • 在Python中以单独显示所有边的方式绘制有向图

    我正在使用 Python 来模拟有向图上发生的过程 我想制作这个过程的动画 我遇到的问题是大多数 Python 图形可视化库将成对的有向边组合成单个边 例如 NetworkX http networkx lanl gov显示下图时仅绘制两条
  • 我怎样才能在 vs 2010 安装项目中为两个不同的发行版本拥有不同的属性等?

    我想要的是我的解决方案中只有一个安装项目 并且我希望能够在一台计算机上同时安装 release1 和 release2 版本 如版本 debug release1 release2 因此 release1 版本需要自己的程序文件夹 产品代码
  • 抓取重定向的页面

    我尝试抓取一个简单的页面 需要欢呼和请求 https www ishares com uk individual en products 251824 https www ishares com uk individual en produ
  • 当 spring.profiles.active 设置多个 Spring 环境配置文件时,优先顺序是什么

    我只是想知道是什么优先顺序是指定多个 Spring 活动配置文件时的顺序 说我想要default配置文件处于活动状态 但dev当有多个相同的元素 例如 bean 可供选择但具有不同的配置文件时 配置文件将覆盖它 比如说我有两个Propert
  • 在 MongoDb 中更新插入字典

    据我所知 mongodb 知道Dictionary作为一个对象 它不能进行任何与数组相关的操作 我更改了序列化并尝试了各种类型的字典序列化 但没有机会 所以我将我的字段 字典 全部 加载到内存中 更新它并将其设置回 mongodb 有什么办
  • setPage() 函数的页码错误:0

    我的 tcpdf 代码是 file to show test details pdf view test details tpl test details smarty gt fetch file to show test details
  • Maven 和 Jenkins - 'mvn' 不被识别为内部或外部命令,

    我正在尝试学习 Jenkins 和 Maven 到目前为止我所做的 安装Maven并设置M2 and M2 HOME作为环境变量 从 eclipse 创建一个简单的 Maven 项目 gt 创建了一个 bat我要移动到的目录中的文件pom
  • 在 React Native WebView 中启用弹出窗口

    我有一个 React Native 应用程序 使用 React Native 0 43 3 它使用 WebView 来显示用于网上银行的网页 该网站加载一个带有登录页面的弹出窗口 对于 ReactNative WebView 此弹出窗口不会
  • 无法从 X509Store 读取 CurrentUser 证书

    我正在开发 ASP NET 4 0 Web 应用程序 我想从 X509Store 读取当前用户证书 读取 LocalMachine 证书工作正常 但如果我将 StoreLocation 设置为 CurrentUser 它会给我一个空集合 下
  • 如何控制何时在 iOS 中提示用户推送通知权限

    我使用 Swift 和 Xcode 6 以及 Parse 框架来处理服务 为 iPhone 构建了一个应用程序 在遵循有关如何设置推送通知的 Parse 教程时 说明建议我将推送通知放在 App Delegate 文件中 这是我添加到应用程
  • 从 PowerShell 使用 .NET 库

    我有一个用于操作数据库的 PowerShell 管理单元 管理单元本身只是在单独的 NET DLL 中实现的主库的包装 所有这些都用 C 编写 我已使用 installutil exe 向 GAC 注册了管理单元和实现 DLL 虽然该管理单
  • 如何使用 robolectric 对 Android 音频录制应用程序进行单元测试

    我只是想知道是否可以使用 Robolectric 框架对 Android 录音机应用程序进行单元测试 据我所知 Robolectric 没有使用模拟器或真实设备进行测试 但是在录音应用程序中 我需要测试音频是否被录制 它是否存储在SD卡上的
  • Spotify Embed iFrame 仅播放歌曲预览

    在我的网站上 即使我登录了 Spotify Premium 我似乎也只能在 Chrome 和 Safari 中播放播放列表中的曲目预览 不过 完整曲目可以在 Firefox 中播放 为什么会出现这种情况呢 这是我的网站 www studif
  • 全屏模式下的 JInternalFrame

    我打算在全屏模式下使用 JInternalFrame 作为模态 JDialog 但是 当前在调用它时并未显示它 我需要将其添加到某个容器中吗 我尝试将其添加到 JOptionPane showInternalMessage 但由于我想让对话
  • 即席查询、存储过程、动态 SQL [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • PHP - 简单 XML - 嵌套层次结构

    我一直在使用 PHP 的简单 XML 函数来处理 XML 文件 下面的代码适用于简单的 XML 层次结构 xml simplexml load file test xml echo xml gt getName br foreach xml