2017-07-21 7 views
1

PHPから特殊文字でXMLを作成しようとしています。特殊文字 '&'でPHP - > XMLを作成

$xml = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8" ' . 'standalone="yes"?><Root/>'); 

$data->addChild('NAME', $variable); 

$dom = new DOMDocument('1.0'); 
$dom->preserveWhiteSpace = false;  
$dom->formatOutput = true; 
$dom->loadXML($xmlAusgabe = $xml->asXML()); 
$dom->save('../test.xml'); 

出力が空であることに「&」のような特殊文字があります。

私は、これらの文字はUTF-8で利用できると思いました。

誰かが私を助けることができますか? XMLを埋め込むと

+1

アンパサンド( '&')はどこですか?私はその質問には何も見ることができません。 – axiac

+1

'$ dom-> loadXML($ xmlAusgabe = $ xml-> asXML());のポイントは何ですか? ['SimpleXMLElement'](http://php.net/manual/en/class.simplexmlelement.php)または[' DOMDocument'](http://php.net/manual/en/class.domdocument.php)を使用してください。 )、それらを混合しないでください。それは傷つけることはありませんが、どちらも助けになりません。 XML文書を構築する必要がある場合、 'SimpleXMLElement'はノードと属性を追加して文書をXMLとして保存するためにのみ使用できます。 DOMDocumentはより柔軟性があり、ノードの置換と削除も可能です。既存のドキュメントも編集できます( 'SimpleXMLElement'はできません)。 – axiac

答えて

0

は、常に多くの問題がある:(これを試してみてください。

変更

$xmlAusgabe = $xml->asXML(); 
$xmlAusgabe = mb_convert_encoding($xmlAusgabe, 'HTML-ENTITIES', 'UTF-8') ; 
$dom->loadXML($xmlAusgabe); 

が続いチェックエンコーディングおよびファイル・エンコーディングはUTF8ある

$dom->loadXML($xmlAusgabe = $xml->asXML()); 

によってあなたの場合vimエディタを使用:

set encoding=utf-8 
set fileencoding=utf-8 

UPDATE

libxml_use_internal_errors(FALSE); 

$xml = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Root/>'); 

$data->addChild('NAME', mb_convert_encoding($variable, 'HTML-ENTITIES', 'UTF-8')); 

$xmlAusgabe = $xml->asXML(); 

$dom = new DOMDocument(); 
$dom->loadXML($xmlAusgabe); 
$dom->save('../test.xml'); 

私はこのコードと実行を確認してください。エラーを印刷するには:

libxml_get_errors() 
+0

ご協力いただきありがとうございますが、動作しません。 このノードには、出力はまだありません。 '<?xmlのバージョン= "1.0" エンコード= "UTF-8" スタンドアロン= "はい">' '' '' '' – Chris

+0

更新あなたのPCにコードテストのエントリ – MikeSouto

+0

HTMLを埋め込んでいればCDATAタグ – MikeSouto