我试图将以下内容显示为xml文件:
<NetAmount currency="GBP">200</NetAmount>以下是我的php代码:
<?php
$str = '<?xml version="1.0" encoding="UTF-8" standalone="no"?><CarrierFreightInvoice></CarrierFreightInvoice>';
$xml = simplexml_load_string($str);
$RID = $_POST['rid'];
$SNDID = $_POST['sndid'];
$RID = htmlentities($RID, ENT_COMPAT, 'UTF-8', false);
$SNDID = htmlentities($SNDID, ENT_COMPAT, 'UTF-8', false);
$xml->Header = "";
$xml->Header->addChild('RID', $RID);
$xml->Header->addChild('SNDID', $SNDID);
$FreightInvoiceNumber = $_POST['fin'];
$FreightInvoiceDate = $_POST['fid'];
$CarrierReferenceNumber = $_POST['crn'];
$ShipperReferenceNumber = $_POST['srn'];
$NetAmount = $_POST['net'];
$Currency = $_POST['gbp'];
$FreightInvoiceNumber = htmlentities($FreightInvoiceNumber, ENT_COMPAT, 'UTF-8', false);
$FreightInvoiceDate = htmlentities($FreightInvoiceDate, ENT_COMPAT, 'UTF-8', false);
$CarrierReferenceNumber = htmlentities($CarrierReferenceNumber, ENT_COMPAT, 'UTF-8', false);
$ShipperReferenceNumber = htmlentities($ShipperReferenceNumber, ENT_COMPAT, 'UTF-8', false);
$NetAmount = htmlentities($NetAmount, ENT_COMPAT, 'UTF-8', false);
$Currency = htmlentities($Currency, ENT_COMPAT, 'UTF-8', false);
$xml->addChild('FreightInvoiceNumber', $FreightInvoiceNumber);
$xml->addChild('FreightInvoiceDate', $FreightInvoiceDate);
$xml->addChild('CarrierReferenceNumber', $CarrierReferenceNumber);
$xml->addChild('ShipperReferenceNumber', $ShipperReferenceNumber);
$xml->addChild('NetAmount', $NetAmount, $Currency);
$doc = new DOMDocument('1.0');
$doc->formatOutput = true;
$doc->preserveWhiteSpace = true;
$doc->loadXML($xml->asXML(), LIBXML_NOBLANKS);
$doc->save('test.xml');
?>其结果是:
<NetAmount xmlns="GBP">200</NetAmount>我尝试过各种addchild组合,但我无法让它工作,我不是这个php的专家!它看起来有点像html中的php包含,它可以解决这个问题。我希望能给你一些建议..。
发布于 2018-04-27 16:00:09
使用addChild()时,第三个参数是要将项添加到的命名空间(请参阅http://php.net/manual/en/simplexmlelement.addchild.php)。这就是为什么
$xml->addChild('NetAmount', $NetAmount, $Currency);将货币添加为命名空间。
如果要添加属性,则需要执行如下操作。创建元素,然后将属性添加到新元素。
$amount = $xml->addChild('NetAmount', $NetAmount);
$amount->addAttribute('currency', $Currency);https://stackoverflow.com/questions/50065897
复制相似问题