这里我动态地在xml上生成但是在这里我得到了xml,但在最后一个额外的两个标签来了。
这里是我的xml
<Main>
<Mainrow>
<code>xxxx</code>
<itemname>AAAAA</itemname>
<qty>5.000</qty>
</Mainrow>
</Main>/Mainrow></Main>
我的循环
$stock_txt = '<Main>';
foreach($results as $key => $datas){
$stock_txt .= '<Mainrow>';
foreach($datas as $val=>$res){
$stock_txt .= '<'.$val.'>'.$res.'</'.$val.'>';
}
$stock_txt .= '</Mainrow>';
}
$stock_txt .= '</Main>';
$dom->loadXML($stock_txt);
$dom->save($myFile); // myFile -- my path to save file
fwrite($fh, $stock_txt);
如何修剪最后的
/ Mainrow and Main
我试过
SUBSTR($ stock_txt,-22);但未能获得XML生成
提前致谢
答案 0 :(得分:1)
不要将XML创建为文本,使用DOM或XMLWriter方法来创建/添加节点。您将XML字符串加载到DOM并保存。那么为什么不从一开始就使用DOM方法:
sconf
输出:
$results = [
[
'code' => 'xxxx',
'itemname'=> 'AAAAA',
'qty'=> '5.000'
]
];
$document = new DOMDocument();
$main = $document->appendChild($document->createElement('Main'));
foreach ($results as $datas) {
$row = $main->appendChild($document->createElement('Mainrow'));
foreach ($datas as $name => $value) {
$row
->appendChild($document->createElement($name))
->appendChild($document->createTextNode($value));
}
}
$document->formatOutput = TRUE;
//$document->save($myFile);
echo $document->saveXml();