2017-11-19 8 views
0

を生成します。私は(値のみが変更されます)、まさにこのようなXMLファイルを生成する必要が特定のXMLファイル

<emotionml version="1.0" xmlns="http://www.w3.org/2009/10/emotionml"> 
    <emotion xmlns="http://www.w3.org/2009/10/emotionml" category-set="http://www.w3.org/TR/emotion-voc/xml#fsre-categories" start="1508862134106" duration="30"> 
     <category name="anger" value="0.00"/> 
     <category name="contempt" value="0.20"/> 
     <category name="disgust" value="0.43"/> 
     <category name="fear" value="0.00"/> 
     <category name="joy" value="0.00"/> 
     <category name="sadness" value="0.03"/> 
     <category name="surprise" value="0.21"/> 
    </emotion> 
    <BEHAVIOR start="1508862134106" duration="30"> 
     <category name="Engaged" value="0.08"/> 
    </BEHAVIOR> 
</emotionml> 

私の試みは、常にこのような何か(このXMLダウンテストで返します

my xml output

my xml output

再開:私のxmlインは、IDEではないイムは、感情1)を建てする方法を学ぶためにやっていること頭はxmlタグで始まります(私はemotionmlタグで始まりたい)、その属性で感情タグを作る方法がわかりません。

EDIT 1:(私のコード)

function index(){ 
    $pessoa = [ 
     'person' => [ 
      $_POST['username'] => 'nome', 
      $_POST['email'] => 'email', 
      $_POST['sexo'] => 'sexo', 
     ] 
    ]; 

    $xml = '<emotionml version="1.0" xmlns="http://www.w3.org/2009/10/emotionml"></emotionml>'; 

    array_walk_recursive($pessoa, array($xml, 'addChild')); 
    print($xml->asXML()); 

    $xmlFile = fopen("teste.xml", "a"); 
    $escreve = fwrite($xmlFile, $xml->asXML()); 
    fclose($xmlFile); 
} 
+0

あなたのコードを含めることができますが、それは既存の問題を解決するために、時には簡単です完全に異なるものを書くよりもコードを作成すること。 –

+0

さて、されています。 –

+0

希望の出力はどのように現在の試行に関連していますか?たとえば、希望のバージョンでは* email *はどこですか?あなたはソースXMLファイルから始めますか? – Parfait

答えて

0

のSimpleXMLは出力のフォーマットに非常に良いではありませんが、あなたが期待してもう少し何かを与えることのDOMDocumentとさまざまなオプションを使用する必要があります...

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

これは、現在持っているファイルの書き換えになります。 $xml->asXML()からの出力を受け取り、それをDOMDocumentにロードし、出力をファイルにフォーマットします。

xmlタグを除外するには、上記のコードの最後に$ dom-> saveの代わりにもう少し処理を加えなければなりません。自分でファイルを書き出す必要がありますが、今回は上記のコードの出力...

$dom = new DOMDocument('1.0'); 
$dom->preserveWhiteSpace = false; 
$dom->formatOutput = true; 
$dom->loadXML($xml->asXML()); 
file_put_contents("teste.xml", $dom->saveXML($dom->documentElement)); 
+0

ありがとう、ナイジェル!あなたは私をたくさん助けました。 –

0

私は単純なテキストファイルを作成し、私の問題を解決し、その上にフォーマットされた文字列を挿入します。

$br = PHP_EOL; $tb1 = "\t"; tb2= "\t\t"; 
$headerEmotion = '<emotionml version="1.0" xmlns="http://www.w3.org/2009/10/emotionml">'. $br; 
$botEmotionml = '</emotionml>'. $br; 
$catEmotion = 
      $tb2 . '<category name="anger" value="' . ($frame['emotions']['anger'])/100 . '"/>' . $br . 
      $tb2 . '<category name="contempt" value="' . ($frame['emotions']['contempt'])/100 . '"/>' . $br . 
      $tb2 . '<category name="disgust" value="' . ($frame['emotions']['disgust'])/100 . '"/>' . $br . 
      $tb2 . '<category name="fear" value="' . ($frame['emotions']['fear'])/100 . '"/>' . $br . 
      $tb2 . '<category name="joy" value="' . ($frame['emotions']['joy'])/100 . '"/>' . $br . 
      $tb2 . '<category name="sadness" value="' . ($frame['emotions']['sadness'])/100 . '"/>' . $br . 
      $tb2 . '<category name="surprise" value="' . ($frame['emotions']['surprise'])/100 . '"/>' . $br; 

$xmlFile = fopen('php://output', 'w'); 
fwrite($xmlFile, $headerEmotion); 
fwrite($xmlFile, $catEmotion); 
fwrite($xmlFile, $botEmotion); 
fclose($xmlFile); 
+0

XMLを文字列値で構築しないでください。 PHPの[simplexml](http://php.net/manual/en/book.simplexml.php)や[DOMDocument](http://php.net/manual/en/class.domdocument.php)などのDOMメソッドを使用して、 。 – Parfait

+0

私は試みましたが、なぜこれらのメソッドを使用して特定のXMLファイルを作成できなかったのか分かりません –

関連する問題