使用 PHP 从 XML 中删除空标签

2023-11-23

Question

如何删除 PHP 中的空 xml 标签?

Example:

 $value1 = "2";
 $value2 = "4";
 $value3 = "";

 xml = '<parentnode>
        <tag1> ' .$value1. '</tag1>
        <tag2> ' .$value2. '</tag2>
        <tag3> ' .$value3. '</tag3>
       </parentnode>';

XML 结果:

<parentnode>
    <tag1>2</tag1>
    <tag2>4</tag2>
    <tag3></tag3> // <- Empty tag
</parentnode>

我想要的是!

    <parentnode>
            <tag1>2</tag1>
            <tag2>4</tag2> 
    </parentnode>

没有空标签(如“tag3”)的 XML

Thanks!


您可以使用XPath谓词 not(node())选择所有没有子节点的元素。

<?php
$doc = new DOMDocument;
$doc->preserveWhiteSpace = false;
$doc->loadxml('<parentnode>
    <tag1>2</tag1>
    <tag2>4</tag2>
    <tag3></tag3>
    <tag2>4</tag2>
    <tag3></tag3>
    <tag2>4</tag2>
    <tag3></tag3>
</parentnode>');

$xpath = new DOMXPath($doc);

foreach( $xpath->query('//*[not(node())]') as $node ) {
    $node->parentNode->removeChild($node);
}

$doc->formatOutput = true;
echo $doc->savexml();

prints

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

使用 PHP 从 XML 中删除空标签 的相关文章

  • Yii2 异常:ApcCache 需要加载 PHP apc 扩展

    在高级模板前端的主配置中配置缓存组件时 我收到异常 在我的 php ini 上启用了扩展 rsults 如何解决此问题 前端 config main php cache gt class gt yii caching ApcCache ke
  • .htaccess 异常导致主目录出现问题

    这是我的目录结构 localhost or livehost app bootstrap public vendor code demo 这是我的 htaccess
  • 如何将 HTML 转换为 Markdown?

    我有一个类似 stackoverflow 的网站 有一个文本区域 人们可以在其中写答案 我用这个 PHP 库 http parsedown org 转换降价 我的意思是我使用该函数来转换 italic to i italic i inclu
  • 在 Laravel 5 中截断表

    描述 我有一个充满测试数据的表 有时 我想清除它以获取新数据 我可以在 DBMS 应用程序中执行截断 例如MySQL 工作台 但我试图在我的应用程序中实现它 Goal 创建一个按钮 单击时截断数据库中的表 这是我的步骤 1 声明一条路线 R
  • 阻止注销页面后的后退按钮

    我有 php 注销页面 当用户单击注销链接时 请参阅此页面并重定向到索引页面 但是当单击后退按钮时 我会看到带有用户数据的上一页 当然 当我刷新页面时 我看不到以前的页面和数据 我在单击注销并单击后退按钮后检查了其他代码 drupal 但我
  • 第三个下拉菜单不从数据库填充

    我有以下 Index php
  • 在 Symfony 序列化中更改序列化属性名称

    我正在使用 Symfony 序列化器 效果很好 use Symfony Component Serializer Annotation Groups Groups default notification public function g
  • 使用先前的反向引用作为命名捕获组的名称

    有没有办法使用对先前捕获组的反向引用作为捕获组的名称命名捕获组 这可能不可能 如果不可能 那么这就是一个有效的答案 下列 data description some description preg match data matches p
  • Laravel 5 中的自定义验证器

    我正在将 Laravel 应用程序从 4 升级到 5 但是 我有一个自定义验证器 但无法运行 在L4中 我做了一个验证器 php文件并将其包含在全局 php using require app path validators php 我尝试
  • 语法错误,第 288 行出现意外的“endif”(T_ENDIF)[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我一直在离线处理我的 WordPress 网站的此代码错误 解析错误 语法错误 homez 541 photoher marie
  • WordPress 分页自定义帖子类型

    我有一个名为 新闻 的页面 使用页面模板page newslist php 它应该显示来自自定义帖子类型 也称为新闻 的帖子 我意识到两者具有相同的名称会导致问题 因此在注册自定义帖子类型时 我进行了重写以将其与页面区分开来 rewrite
  • 使用 XSLT 将 XML 转换为 SQL

    由于我无法控制的原因 我将获得一个 XML 文件和一个 XSLT 文件 该文件可以将 XML 文件转换为 SQL 代码或错误 现在让我们假设我们可以信任提供 XML 文件的人不会在 XML 中包含危险的构造 我什至不知道是否应该使用 Sim
  • 为什么我的 if 语句没有按我预期的方式工作?

    我正在尝试实现以下目标 我向我的 SQL 数据库询问使用SELECT FROM subjects 这样做之后我要求使用数组mysqli fetch assoc 在那之前一切都很好 现在的问题是 当我尝试在每个循环中修改 genero 的值
  • 使用 PHP 的 MySQL 连接字符串

    我正在尝试通过本地计算机连接到托管在我的服务器上的数据库 我的服务器有cPanel 11 它是一个典型的共享服务器 由CentOS提供支持 安装了PHP和MySQL 准确地说 我在同一台服务器上持有经销商帐户 我想在不同帐户或域之间访问数据
  • MySQL PHP邮政编码比较具体距离

    我试图找出比较一个邮政编码 用户提供的 和一大堆其他邮政编码 现在大约有 200 个邮政编码 之间的距离的最有效方法 相对于加载时间 但它会随着时间的推移而增加 我不需要任何精确的东西 只是在球场上 我下载了整个美国的邮政编码 csv 文件
  • WordPress 插件中的类自动加载器

    我想编写一个类自动加载器以在 WordPress 插件中使用 该插件将安装在多个站点上 我想尽量减少与其他插件发生冲突的机会 自动加载器将是这样的 function autoload name some code here 我的主要问题是
  • 检查条件并通过 Zend 中的 Regex 识别 url 中的模式

    我正在实现 Zend Regex 路由 并且必须对 url 执行多次检查 例如 如果这是我的网址 http localhost application public index php module controller action 这是
  • XSD 嵌套元素

  • 如何从父类中获取子类名

    我试图在不需要子类上的函数的情况下完成此任务 这可能吗 我有一种感觉 但我真的很想确定
  • Laravel $request->file() 返回 null

    尝试在后端使用 Laravel 上传文件时遇到问题 Issue Laravel request gt file 方法返回 null Setup 我使用以下方法构建了一个 AJAX 请求超级代理人 https github com visio

随机推荐

  • Java 11 HttpClient - HttpClient 与并发 HttpRequest 的最佳比率是多少

    在下面的示例中 我创建一个 Java 11 httpClient 然后创建多个并发 HttpRequest 这是不好的做法吗 每个 HttpRequest 都应该有自己的 HttpClient 吗 HttpClient 可以拥有的 Http
  • 使用 gsub 删除第一个数字字符之前的所有字符串

    使用 gsub 删除 R 中第一个空格之前的所有字符串 在此示例中 我们尝试删除空格之前的所有内容sub 1 D name 我正在寻找非常相似的东西 但我对正则表达式不太熟悉 我想删除第一个数字字符之前的所有内容 但不删除它 例如 x lt
  • UI5控件的生命周期是如何运作的?

    有人可以更详细地解释 UI5 控件默认事件的生命周期吗 我知道有文档中的此页面它概述了控件生命周期 但是 我认为它非常简短 需要更详细的内容 有人可以列出控件事件的顺序并解释每个事件的作用吗 你是绝对正确的 控件生命周期的详细信息和实现细节
  • 如何使用 SSL/TLS 和/或消息级安全保护 RESTful php Web 服务

    我有一个用 php 编写的 RESTful Web 服务 它使用 JSON 进行通信 传输的一些数据确实很敏感 密码 我正在寻找一种方法来实现服务的合理安全级别 客户端是 silverlight 4 应用程序 我一直在寻找有关如何实施 SS
  • NodeJS 的 Web Sockets 服务器端实现

    这个问题的部分原因可能是客户端的讨论太多 让我只见树木不见森林 无论如何 这就是我想做的 我需要一个独立于平台的 WebSocket 服务器端实现 我希望它在 NodeJS 中运行 现在 我发现的有关该主题的内容 99 都与 socket
  • 如何使用照片框架快速循环浏览照片库

    我有一个应用程序 可以为我的应用程序上的每张门票创建一个独特的照片库 我需要弄清楚如何循环浏览该画廊 以便我可以一次将一张图像上传到服务器 我在 YouTube 上遵循了这些教程 Video 我目前使用 Swift 作为我的语言 我的最终目
  • 如何在 VC++ 中毒害标识符?

    功能中毒在 C 中是非常有用的技术 一般来说 它指的是使某个功能不可用 例如如果您想禁止在程序中使用动态分配 您可以 poison malloc 函数因此无法使用 中毒 标识符意味着 中毒 之后对标识符的任何引用都是硬编译器错误 例如 参见
  • Angular 6:错误类型错误:无法读取未定义的属性“toLowerCase”

    我正在以关于用户的角度六创建 CRUD 应用程序 当我尝试添加新用户时 出现以下错误 这是我收到的错误 core js 12301 ERROR TypeError Cannot read property toLowerCase of un
  • 基于 Microsoft Visual C++ Express 2010 的 64 位构建

    我正在尝试使用 Visual C Express 2010 将 VC 项目编译为 64 位 我知道 64 位编译器没有默认安装 VC Express 因此我按照此处指定的方式安装了适用于 Windows 7 的 Windows SDK ht
  • 使用 jQuery 在新窗口中打开所有外部链接

    这里是 jQuery 新手 我发现了几个网页与我想要做的事情很接近 但又不完全一样 其实我觉得以下是supposed实际工作 但它说 href http 无法识别 语法错误 有什么帮助吗 document ready function a
  • 为什么 apply 尚未绑定到 Javascript 中的函数?

    假设 为了解决这个问题 我希望能够在 Javascript 中创建一个函数 将一个数组的所有元素附加到另一个数组 如果您有权访问目标数组 实现此目的的一种方法是 var destination 1 2 3 var source 4 5 Ar
  • 为什么跳转到 case 标签会在此 switch 中交叉初始化?

    考虑以下代码 include
  • 一般来说,存储过程比现代 RDBMS 上的内联语句更有效吗? [复制]

    这个问题在这里已经有答案了 传统观点认为存储过程总是更快 所以 因为它们总是更快 所以使用它们每时每刻 我很确定这是有历史背景的 这种情况曾经发生过 现在 我并不是主张不需要存储过程 而是我想知道在现代数据库 例如 MySQL SQL Se
  • 找到图中访问所有节点的最短路径

    我有一个加权无向图G with n顶点 其中两个顶点是X and Y 我需要找到起始于的最短路径X 结束于Y并穿过 G 的所有顶点 以任何顺序 我怎样才能做到这一点 这不是旅行商问题 我不需要只访问每个顶点一次 也不想返回第一个顶点 这个问
  • F# 中的事件和委托

    我没有任何 F 经验 但有几行 C 测试代码 用于我制作的框架 需要用 F 重写 任何帮助 将不胜感激 bar Ready new Agent ReadyHandler bar Ready static void bar Ready str
  • 如何在应用程序内浏览器窗口中打开链接

    我想知道如何在应用程序内浏览器中打开链接 就像这样 你可以使用以下方法来实现flutter web browser以 Android chrome 选项卡样式在应用程序内打开网页的插件 Ex body new Center child ne
  • 从Python中的多维列表中删除前导和尾随零[关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我有一个清单 例如 my list 1 2 2 1 0 0 1 2 1 2 0 0 1
  • 函数可以工作( boot.stepAIC ),但在另一个函数中抛出错误 - 环境问题?

    今天我在 R 代码中发现了一个奇怪的行为 我尝试了一个包 boot StepAIC 其中包含一个用于 AIC 逐步回归结果的引导函数 然而 我不认为统计背景是问题所在 我希望如此 我可以在 R 的顶层使用该函数 这是我的示例代码 requi
  • Cython prange 对于 4 个线程来说比范围要慢

    我目前正在尝试遵循一个简单的示例 使用 cython 的 prange 并行化循环 我已经安装了允许 openmp 的 OpenBlas 0 2 14 并针对 openblas 从源代码编译了 numpy 1 10 1 和 scipy 0
  • 使用 PHP 从 XML 中删除空标签

    Question 如何删除 PHP 中的空 xml 标签 Example value1 2 value2 4 value3 xml