Удалить новую строку из значения элемента xml - PullRequest
1 голос
/ 20 ноября 2011

У меня есть XML-файл, содержащий 6000 элементов, таких как LastName и FirstName.

Мне нужно удалить новую строку внутри значения элемента.

Ввод:

<info>
  <LastName>

     HOOVER

  </LastName>
</info>

Выход:

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

Я пробовал preg_replace и str_replace для пробела и \n, \t,\r и не удалось.

1 Ответ

6 голосов
/ 20 ноября 2011

Поскольку вы работаете с XML, вам также следует использовать одно из XML-расширений, которое PHP может предложить. В приведенном ниже примере используются DOM и XPath для поиска всех текстовых узлов в вашем 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>
...