Вложенный вывод xml из формы html с использованием php

Я пытаюсь отобразить в виде 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 решит эту проблему. Я был бы признателен за несколько указателей ....

Позвольте мне понять это правильно, вы хотите, чтобы xmlns вместо этого был currency?

YaBCK 27.04.2018 17:53

Да, именно так.

Andy 27.04.2018 20:54
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
45
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Когда вы используете addChild(), третий параметр - это пространство имен, в которое вы хотите добавить элемент (см. http://php.net/manual/en/simplexmlelement.addchild.php). Вот почему

$xml->addChild('NetAmount', $NetAmount, $Currency);

добавляет валюту в качестве пространства имен.

Если вы хотите добавить атрибут, вам нужно сделать что-то вроде следующего. Создайте элемент, а затем добавьте атрибут к новому элементу.

$amount = $xml->addChild('NetAmount', $NetAmount);
$amount->addAttribute('currency', $Currency);

Это помогло, спасибо большое. Теперь мне просто нужно решить, как назвать имя файла xml из одной из переменных формы ...

Andy 27.04.2018 21:01

Другие вопросы по теме