0

XML ノードの行を順序なしリストに変換しようとしていますが、問題があります。

たとえば、次のノードを使用します。

 <test>
      Line1
      Line2
      Line3
 </test>

PHPでこれに変換したい

 <ul>
      <li>Line1</li>
      <li>Line2</li>
      <li>Line3</li>
 </ul>

DOMDocument と SimpleXML を使用してみましたが、どちらも改行を保持していないようです。エコーされると、ノード値は次のようになります。

 Line1 Line2 Line3

explode各行を要素として含む配列を作成するためにも試しました:

 $lines = explode( '\n', $node->nodeValue);

ただし、要素が 1 つの配列しか返さないため、順序付けされていないリストを作成することはできません。

これを行う簡単な方法はありますか?

ありがとう。

4

1 に答える 1

2

あなたは自分自身を蹴るつもりです。'\n'する必要があります"\n"!完全な例を次に示します。

$Dom = new DOMDocument('1.0', 'utf-8');
$Dom->loadXML(
'<test>
    Line1
    Line2
    Line3
</test>');

$value = $Dom->documentElement->nodeValue;
$lines = explode("\n", $value);
$lines = array_map('trim', $lines); // remove leading and trailing whitespace
$lines = array_filter($lines); // remove empty elements

echo '<ul>';
foreach($lines as $line) {
    echo '<li>', htmlentities($line), '</li>';
}
echo '</ul>';
于 2013-10-11T19:44:01.887 に答える