如何使用 php DOM 获取 内的值?

2024-05-23

我如何使用 php DOM 获取 内的值。 这是我的 xml 中的一些代码。

     <Destinations>

        <Destination>
            <![CDATA[Aghia Paraskevi, Skiatos, Greece]]>
            <CountryCode>GR</CountryCode>
        </Destination>

        <Destination>
            <![CDATA[Amettla, Spain]]>
            <CountryCode>ES</CountryCode>
        </Destination>

        <Destination>
            <![CDATA[Amoliani, Greece]]>
            <CountryCode>GR</CountryCode>
        </Destination>

        <Destination>
            <![CDATA[Boblingen,  Germany]]>
            <CountryCode>DE</CountryCode>
        </Destination>

  </Destinations>

使用 PHP DOM 相当简单,并且与 Javascript 的 DOM 非常相似。

以下是重要的类:

  • DOMNode http://www.php.net/manual/en/class.domnode.php— 可在 XML/HTML 文档中遍历的任何内容的基类,包括文本节点、注释节点和CDATA节点
  • DOM元素 http://www.php.net/manual/en/class.domelement.php— 基类tags.
  • DOM文档 http://www.php.net/manual/en/class.domdocument.php— 文档的基类。包含加载/保存 XML 的方法,以及普通 DOM 文档方法(见下文)。

有一些主要的方法和属性:

  • DOMDocument->load() http://www.php.net/manual/en/domdocument.load.php— 创建新的后DOMDocument,在该对象上使用此方法从文件加载。
  • DOMDocument->getElementsByTagName() http://www.php.net/manual/en/domdocument.getelementsbytagname.php— 此方法返回文档中具有给定标签名称的所有元素的节点列表。然后你可以迭代(foreach)在此列表中。
  • DOMNode->childNodes http://www.php.net/manual/en/class.domnode.php#domnode.props.childnodes— 节点的所有子节点的节点列表。 (记住,一个CDATA部分是一个节点!)
  • DOMNode->nodeType http://www.php.net/manual/en/class.domnode.php#domnode.props.nodetype— 获取type http://www.php.net/manual/en/dom.constants.php一个节点的。 CDATA 节点具有类型XML_CDATA_SECTION_NODE,这是一个常数,其值为4.
  • DOMNode->textContent http://www.php.net/manual/en/class.domnode.php#domnode.props.textcontent— 获取任意节点的文本内容。

Note:您的 CDATA 部分格式错误。我不知道为什么有一个额外的]]在第一个中,或者在行末尾有一个未封闭的 CDATA 部分,但我认为它应该简单地是:

<![CDATA[Aghia Paraskevi, Skiatos, Greece]]>

把这一切放在一起我们:

  1. 创建一个新的文档对象并加载 XML
  2. Get all Destination按标签名称排列元素并迭代列表
  3. 遍历每个节点的所有子节点Destination element
  4. 检查节点类型是否为XML_CDATA_SECTION_NODE
  5. 如果是,echo the textContent该节点的。

Code:

$doc = new DOMDocument();
$doc->load('test.xml');
$destinations = $doc->getElementsByTagName("Destination");
foreach ($destinations as $destination) {
    foreach($destination->childNodes as $child) {
        if ($child->nodeType == XML_CDATA_SECTION_NODE) {
            echo $child->textContent . "<br/>";
        }
    }
}

Result:

Agia Paraskevi, 斯基亚索斯, 希腊
阿梅特拉, 西班牙
希腊阿莫利亚尼岛
德国伯布林根

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

如何使用 php DOM 获取 内的值? 的相关文章

  • MySQL:计算日期/时间之间的差异 - 仅在周一至周五“工作周”期间

    我需要计算开始日期 时间和结束日期 时间之间的差异 但是 我只想在 5 天的工作周内执行此操作 不包括周六 周日 做这个的最好方式是什么 我的想法是 从日期开始 我必须获取星期几 如果是工作日 那么我将添加到累加器中 如果不是 那么我不会添
  • 如何获得打开另一个活动的按钮?

    我已在活动 XML 文件中添加了一个按钮 但无法用它来打开我的其他活动 有人可以逐步告诉我如何做到这一点吗 A 确保您的其他活动已在清单中声明
  • 如何检查 ini_set() 是否在全局 PHP.INI 或我的 PHP 脚本中启用?

    我有一个应用程序安装失败 供应商说我可能禁用了 ini set 我怎样才能检查这个 我对此做了一些研究 结果发现有时 ini set 不会返回 FALSE 而是一个空字符串 gabriel1836 指出的 URL 中提到了这一点 检查它是否
  • 显示标准化数据

    跟进问题 添加 2 个不同表的总和 https stackoverflow com questions 39717541 adding sum from 2 different tables 我创建了3个表 members videos v
  • 将嵌套数组中的“点符号”键扩展到子数组

    我从某个任意深度的嵌套数组开始 在该数组中 一些键是一系列由点分隔的标记 例如 billingAddress street 或 foo bar baz 我想将这些键控元素扩展到数组 因此结果是一个嵌套数组 其中所有这些键都已扩展 例如 bi
  • 如何使用正则表达式将多个
    标签替换为一个
    标签?

    I want br br 变成 br 正则表达式的模式是什么 注 br 标签可以连续出现两次以上 html preg replace br gt s i br html 这将捕获任何组合 br br or br 它们之间有任意数量或类型的空
  • 从按日期时间排序的 MySQL 表中获取用户的最后一个条目

    我有一张看起来像这样的桌子 USERNAME DATA DATETIME Jhon text1 2010 06 01 16 29 43 Mike text2 2010 06 01 16 29 22 Silver text3 2010 05
  • Nusoap“SOAP-ENV:Xml 为空,未解析”消息

    我正在尝试使用 nusoap 实现一个简单的网络服务 服务器
  • 在 Symfony3 中覆盖 Doctrine2 类型

    我想用Carbon http carbon nesbot com docs 我的 Symfony 3 2 应用程序中的对象而不是 SPL DateTime 对象 我发现了一组 DoctrineExtension 类here https gi
  • 使用php将cmyk转rgb

    我正在使用以下脚本将图像保存在文件夹中 但有一张图像显示此消息 图像无法显示 因为它包含错误 我认为问题出在图像上称为 cmyk 和 rgb 的东西 但是当在网上搜索使用 php 将 cmyk 转换为 rgb 的方法时 我找不到如何执行此操
  • 递增字母数字组合

    我偶然发现了这篇文章 如何在 PHP 中仅使用小写字母和数字来增加字母数字字符串 https stackoverflow com questions 42866349 how to increment alphanumeric string
  • 最好的 php DOM 2 数组函数是什么?

    我想解析xml文件 到目前为止 我发现最好的方法是使用 DOMDocument 类 示例 xml 字符串
  • 属性“tablename.title”未定义

    我是伊比 我想做的是上传图像 照片 以及具有更新功能的数据库中的路径条目 我已点击此链接 http www yiiframework com wiki 349 how to upload image photo and path entry
  • 通过CompilerPass注册自定义AttributeBag

    我正在尝试通过将自定义 AttributBags 集成到会话中来整理我的会话变量 在 Symfony 查看相关问题 如何向 symfony 会话添加额外的包 https stackoverflow com questions 4472361
  • SSL 和会话劫持/固定

    快问 SSL 是否完全防止会话劫持 固定 谢谢 不可以 例如 在以下情况下可能会发生劫持 被黑客入侵的 CA 根签署无效证书 该证书可用于发起中间人攻击 被黑客攻击的域名所有者电子邮件收件箱使黑客有可能购买经过域名验证的证书 错误的密钥策略
  • 如何更新 Laravel 编辑视图中的图像?

    在 Laravel 中 我的编辑视图中有一个名为 个人资料图片 的字段 每当我单击 编辑 按钮时 我都会在编辑视图中从数据库中获取所有值 但没有获得图像 并且如果每当我每次单击 提交 按钮时 我都必须如果没有上传图像 我无法进一步处理我想要
  • PHP - 获取类公共变量?

    请考虑下面的代码 class A public function construct class B extends A public a a public b b public c c 如何从父类中获取 B 类的公共变量而不确切知道它们是
  • android中使用xml的新自定义字体方法

    随着 android 发布 O 预览版 添加了一个新功能 称为xml 中的字体 它很容易实现 但我没有什么疑问 让我首先添加最好的方法1 右键单击资源文件夹并前往新建 gt Android 资源目录 新的出现资源目录窗口 2 在资源类型列表
  • PHP:使用 UTF-8 的 strpos 和 substr

    假设我有一个很长的 UTF 8 编码字符串 并说我想检测是否 var存在于该字符串中 假设 var始终是简单的字母或 ASCII 字符数字 例如 hello123 我不需要使用mb strpos or iconv strpos正确的 因为只
  • slim 3 php 应用程序无法在 CentOS 上运行 nginx 访问被拒绝可能是由于 session_start() 函数

    我最近一直在努力在 macOS 上的 virtualbox 上的 CentOS 7 上安装最新的 nginx 1 14 php 7 2 5 和 mariaDB 10 3 7 php终于可以工作了 我已经测试过了php info index

随机推荐