You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP处理HTML表单嵌套XML输出:生成指定NetAmount节点求助

解决PHP生成带属性的XML节点问题

要生成包含<NetAmount currency="GBP">200</NetAmount>的XML文件,结合你已有的SimpleXML代码,我们可以通过addChild()和addAttribute()方法轻松实现。下面是完整的可运行代码:

<?php
// 初始化XML结构
$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);

// 创建Header节点作为容器
$xml->Header = "";

// 将处理后的表单数据添加到Header中
$xml->Header->addChild('RID', $RID);
$xml->Header->addChild('SNDID', $SNDID);

// 创建NetAmount节点并设置文本值
$netAmountNode = $xml->Header->addChild('NetAmount', '200');
// 给NetAmount节点添加currency属性
$netAmountNode->addAttribute('currency', 'GBP');

// 输出XML内容(设置正确的响应头)
header('Content-Type: application/xml');
echo $xml->asXML();

// 如果需要保存到本地文件,替换上面两行为:
// $xml->asXML('carrier_invoice.xml');
?>

关键细节说明:

  • 节点创建:addChild()方法负责创建新的XML节点,第一个参数是节点名称,第二个可选参数是节点的文本内容。
  • 属性添加:创建节点后调用addAttribute(),传入属性名和属性值,就能给节点添加指定属性。
  • 数据转义:你使用的htmlentities()能有效转义XML中的特殊字符(比如<、>、&),避免破坏XML结构,这个处理是很必要的。
  • 输出/保存:asXML()方法既可以直接输出XML字符串,也可以传入文件名将XML保存到本地。

如果你的NetAmount节点不需要放在Header下,直接调整代码为$netAmountNode = $xml->addChild('NetAmount', '200');即可。

内容的提问来源于stack exchange,提问作者Andy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:08:20