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 に答える