4

API 集成文档指定所有节点名称都区分大小写。我正在使用 PHP SimpleXMLElement,但看不到强制大写节点名称的方法。有人遇到过强制节点名称为大写的方法吗?

 $xmlstr = '<Request>'.
        '</Request>';


$sxe = new SimpleXMLElement($xmlstr);
$authentication = $sxe->addChild('Authentication');
$authentication->addChild('Version', '2.0');
$processid = $sxe->addChild('Process ID=importSale');
$importsale = $processid->addChild('importSale');
$importsale->addChild('SCRIPTCODE', '<![CDATA[SCRIPT001]]>');
$importsale->addChild('PRODID','<!CDATA[DNTMAN]]>');
echo $sxe->asXML();

在“查看源代码”中查看时,“SCRIPTCODE”和“PRODID”都是小写的。如何强制这些为大写?

4

2 回答 2

1

从理论上讲,您提供的代码已经完成了这项工作!默认情况下,添加到 simpleXMLElement 的所有子项都将保留其原始大小写!

$sxe = new SimpleXMLElement('<Request></Request>');
$authentication = $sxe->addChild('Authentication');
$authentication->addChild('Version', '2.0');
$processid = $sxe->addChild('Process ID=importSale');
$importsale = $processid->addChild('importSale');
$importsale->addChild('SCRIPTCODE', '<![CDATA[SCRIPT001]]>');
$importsale->addChild('PRODID','<!CDATA[DNTMAN]]>');
echo $sxe->asXML();

你得到执行代码是这样的:

<Request>
    <Authentication>
        <Version>2.0</Version>
    </Authentication>
    <Process>
        <Process ID=importSale>
            <SCRIPTCODE><![CDATA[SCRIPT001]]></SCRIPTCODE>
            <PRODID><!CDATA[DNTMAN]]></PRODID>
        </importSale>
    </Process>
</Request>

SCRIPTCODE并且PRODID都保持大写!

注意:这不是将 cdata 添加到节点值的正确方法......这将导致 html-entity 转换,如&lt;!CDATA[]]&gt;

于 2013-05-01T02:19:42.263 回答
-1

不要查看源代码,而是尝试将输出回显到屏幕:

echo htmlentities($sxe->asXML());
于 2016-05-04T22:51:57.967 回答