我得到了一个类似以下示例的XML:

<article>
  <body>
    <title>I <underline><bold>LOVE</bold></underline> Coding</title>
  </body>
</article>

我想要得到 node title的全文.

$xml=simplexml_load_file("file.xml");
$title=$xml->xpath('//title')??[];
echo (string)$title;

我似乎无法更深入地抓住带下划线/粗体的XML部分.

我希望结果是字符串I LOVE Coding.

我怎样才能做到这一点呢?我只得到I Coding分.

我也试了xpath('string(//title)')次,但没有结果.

推荐答案

坦率地说,SimpleXML不是一个很好的接口.这很简单,因为它没有太多东西,但也很简单,因为有相当多的缺失,而且经常最终需要更多的工作.

DomDocument功能更全,而且更适合与IMO配合使用.

$xml = <<<_E_
<article>
  <body>
    <title>I <underline><bold>LOVE</bold></underline> Coding</title>
  </body>
</article>
_E_;

$d = new DomDocument();
$d->loadXml($xml);
$x = new DomXPath($d);
$r = $x->query('//title');

var_dump($r[0]->textContent);

输出:

string(13) "I LOVE Coding"

Php相关问答推荐

使用箭头函数语法时,在回调范围内无法访问变量变量(警告:未定义的变量)

Symfony Api平台:按自定义实体方式排序结果

在Laravel中为表添加前缀,以将它们逻辑地分组

为什么本地主机(Xampp)上的laravel运行速度比普通html站点慢?

免费送货柜台,考虑到折扣码

使用MySQLi使用连接字符串设置字符集

使用php ZipArhive类将Zip压缩文件分成多个部分

移动应用:在PHP中忽略Cookie?

PHP-准备用于TCP套接字的数据包

根据类别的数量折扣更改WooCommerce购物车商品价格

HTTPPost请求在从php脚本调用时返回404,但在从node.js脚本调用时有效.终结点有效

如何在其他数组php中创建具有关联数组的数组

Woocommerce 相关产品按其类别或排名数学主要类别

AWS S3:当对象名称包含 % 时复制对象失败并出现错误 - 无效的复制源编码

simplexml_load_file 和 simplexml_load_string 返回具有不同编码的相同数据

根据WooCommerce中的产品重量更改简单产品的输入数量步值

在WooCommerce我的账户单个订单页面中添加订单商品部分和按钮

在 Symfony 测试中何时使用 TestCase 而不是 KernelTestCase

基于其他数组创建多维数组 struct

如何获取最后一条消息属于 Laravel 中特定用户的对话列表