我必须生成一个看起来与此完全相同的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 down是我正在做的一个测试,学习如何构建情感):
恢复:我的xml没有被认可,头部以xml标签开头(我想从emotionml标签开始),我不知道如何使用其属性制作情感标签。
编辑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)
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-&gt;保存,你必须回去自己编写文件,但这次使用以上代码的输出......
$dom = new DOMDocument('1.0');
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->loadXML($xml->asXML());
file_put_contents("teste.xml", $dom->saveXML($dom->documentElement));
答案 1 :(得分: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);