首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用php从html表单中嵌套xml输出

使用php从html表单中嵌套xml输出
EN

Stack Overflow用户
提问于 2018-04-27 15:40:40
回答 1查看 52关注 0票数 0

我试图将以下内容显示为xml文件:

代码语言:javascript
复制
<NetAmount currency="GBP">200</NetAmount>

以下是我的php代码:

代码语言:javascript
复制
<?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');

?>

其结果是:

代码语言:javascript
复制
<NetAmount xmlns="GBP">200</NetAmount>

我尝试过各种addchild组合,但我无法让它工作,我不是这个php的专家!它看起来有点像html中的php包含,它可以解决这个问题。我希望能给你一些建议..。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-27 16:00:09

使用addChild()时,第三个参数是要将项添加到的命名空间(请参阅http://php.net/manual/en/simplexmlelement.addchild.php)。这就是为什么

代码语言:javascript
复制
$xml->addChild('NetAmount', $NetAmount, $Currency);

将货币添加为命名空间。

如果要添加属性,则需要执行如下操作。创建元素,然后将属性添加到新元素。

代码语言:javascript
复制
$amount = $xml->addChild('NetAmount', $NetAmount);
$amount->addAttribute('currency', $Currency);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50065897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档