2017-11-08 7 views
2
<resource> 
<string>a</string><--comment here--> 
<string>b</string> 
</resource> 

私のプロジェクトで上記の方法でxmlを生成する必要があります。 これを生成するためにphpベースライブラリDOMDocumentを使用しています。PHPでこの形式のxmlを生成する方法

私がいない場合、それは任意のヘルプは感謝だろう、私は混乱します <resource><string>a</string><--comment--><string>b</string></resource> 、だろう

<resource> 
<string>a</string> 
<--comment--> 
<string>b</string> 
</resource> 

、だろうformatOutput =真を、使用している場合。

+0

なぜ要素ノードより前にコメントを置くのはなぜですか? – ThW

答えて

0

DOMの出力フォーマットの有効/無効を制御することはできません。 XMLを文字列として後処理する必要があります(例:コメントでTHWが指摘したようpreg_replace

$dom = new DOMDocument("1.0", "utf-8"); 
$root = $dom->appendChild($dom->createElement("resource")); 
$root->appendChild($dom->createElement("string", "a")); 
$root->appendChild($dom->createComment("comment here")); 
$root->appendChild($dom->createElement("string", "b")); 

$dom->formatOutput = true; 
echo preg_replace('#</string>\s+<!--#', "</string><!--", $dom->saveXML()); 

てフォーマットされた出力を実行します。別のオプションは、formatOutputadd all the formatting you need through DOMNodes、例えばを有効にしないだろうDOMText要素を空白で追加します。私はそれがセマンティクスを運びませんし、実際のDOM構築が乱雑になるので、いくぶん醜いことがわかります。

なぜこの形式でフォーマットする必要がありますか?書式設定は意味的意味を追加しません。コメントが文字列要素の横にあるのかそれより下にあるのかは関係ありません。

+0

コメントは、すべての単一の文字列タグに密接に関連しています。行を読み込んでカットするのはマネージャにとってはいいと思います。とにかく、 –

+0

、ありがとう! –

+1

空白スペースノードを手作業で追加することが可能です - https://eval.in/895282 :-) – ThW

関連する問題