PHP 解析 XML 以获取多个深度的所有字符串值我<underline><bold>爱</bold></underline>编码

问题描述 投票:0回答:2

我有一个类似于以下示例的 XML:

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

我想获取节点title的全文。

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

我似乎无法更深入地了解带下划线/粗体的 XML 部分。

我希望结果是一个字符串

I LOVE Coding

我怎样才能实现这个目标?我只得到

I Coding

我也尝试过

xpath('string(//title)')
但得到了空结果。

php xpath simplexml
2个回答
0
投票

您需要剥离

<title>
内部的标签,如下所示:

$xmlFile = simplexml_load_file('file.xml');
$title = strip_tags($xmlFile->body->title->asXML());

echo $title;

或者如果您的 XML 不是文件而是字符串:

$xmlString = '<article>
  <body>
    <title>I <underline><bold>LOVE</bold></underline> Coding</title>
  </body>
</article>';

$xml = simplexml_load_string($xmlString);
$title = strip_tags($xml->body->title->asXML());

echo $title;

0
投票

您可以拨打

dom_import_simplexml()
检索 DOM 元素,然后使用
textContent
属性:

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

$doc = simplexml_load_string($xml);
$title = $doc->xpath('//title')[0];
$dom = dom_import_simplexml($title);
echo $dom->textContent;

结果:

I LOVE Coding
© www.soinside.com 2019 - 2024. All rights reserved.