【问题标题】:Remove newline from xml element value从 xml 元素值中删除换行符
【发布时间】:2011-11-20 09:22:31
【问题描述】:

我有一个 xml 文件,其中包含 6000 个元素,例如 LastName 和 FirstName。

我需要删除元素值内的新行。

输入:

<info>
  <LastName>

     HOOVER

  </LastName>
</info>

输出:

<info>
  <LastName>
     HOOVER
  </LastName>
</info>

我试过preg_replacestr_replace 空间和\n\t\r 并失败了。

【问题讨论】:

  • 请注意,虽然这个问题在技术上是重复的,但链接的重复没有可接受的答案,并且给定的解决方案在质量上只是一般。也许链接的应该用这个关闭。
  • 这个问题要求部分保留空格,这样缩进就不会被破坏。重复的问题似乎对更常见的 XML 空白规范化感兴趣,而不仅仅是内容上的 trim(但由于 PCRE 中的 任何空白字符 \s 而不是更多) utf-8 模式),见a DOM based answer there

标签: php xml newline


【解决方案1】:

由于您使用的是 XML,因此您还应该使用 XML extensions PHP 提供的一种。下面的示例使用DOMXPath 查找XML 文档中的所有文本节点以及trim 它们。

输入:

$xml = <<< XML
<info>

  <LastName>

     HOOVER

  </LastName>

</info>
XML;

代码:

$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();

输出:

<?xml version="1.0"?>
<info>
  <LastName>HOOVER</LastName>
</info>

【讨论】:

    猜你喜欢
    • 2018-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-10
    • 1970-01-01
    相关资源
    最近更新 更多