从xml元素值中删除换行符

use*_*508 1 php xml newline

我有一个包含像LastName和FirstName这样的6000元素的xml文件.

我需要删除元素值中的新行.

输入:

<info>
  <LastName>

     HOOVER

  </LastName>
</info>
Run Code Online (Sandbox Code Playgroud)

输出:

<info>
  <LastName>
     HOOVER
  </LastName>
</info>
Run Code Online (Sandbox Code Playgroud)

我试过preg_replacestr_replace空间和\n,\t,\r和失败.

Gor*_*don 7

由于您正在使用XML,因此您还应该使用PHP提供的XML扩展之一.下面的示例使用DOMXPath查找XML文档中的所有文本节点及其trim.

输入:

$xml = <<< XML
<info>

  <LastName>

     HOOVER

  </LastName>

</info>
XML;
Run Code Online (Sandbox Code Playgroud)

码:

$dom = new DOMDocument;
$dom->preserveWhiteSpace = false;
$dom->loadXml($xml);
$xpath = new DOMXPath($dom);
foreach ($xpath->query('//text()') as $domText) {
    $domText->data = trim($domText->nodeValue);
}
$dom->formatOutput = true;
echo $dom->saveXml();
Run Code Online (Sandbox Code Playgroud)

输出:

<?xml version="1.0"?>
<info>
  <LastName>HOOVER</LastName>
</info>
Run Code Online (Sandbox Code Playgroud)