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
相关产品推荐
相关产品推荐

