Я пытаюсь отобразить в виде 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! Похоже, что включение php в html решит эту проблему. Я был бы признателен за несколько указателей ....
Да, именно так.






Когда вы используете addChild(), третий параметр - это пространство имен, в которое вы хотите добавить элемент (см. http://php.net/manual/en/simplexmlelement.addchild.php). Вот почему
$xml->addChild('NetAmount', $NetAmount, $Currency);
добавляет валюту в качестве пространства имен.
Если вы хотите добавить атрибут, вам нужно сделать что-то вроде следующего. Создайте элемент, а затем добавьте атрибут к новому элементу.
$amount = $xml->addChild('NetAmount', $NetAmount);
$amount->addAttribute('currency', $Currency);
Это помогло, спасибо большое. Теперь мне просто нужно решить, как назвать имя файла xml из одной из переменных формы ...
Позвольте мне понять это правильно, вы хотите, чтобы
xmlnsвместо этого былcurrency?