0

次の例を使用して作成した XML 文字列があります。

//add root
$Add = $dom->appendChild($dom->createElement('Add')); 
//pCase
$pCase = $Add->appendChild($dom->createElement('pCase')); 

//add elements
$LeadGenID = $pCase->appendChild($dom->createElement('LeadGenID'));
$LeadGenID->appendChild($dom->createTextNode('22'));

$Debtor = $pCase->appendChild($dom->createElement('Debtor'));
//address fields
$Addresses = $Debtor->appendChild($dom->createElement('Addresses'));
$Address = $Addresses->appendChild($dom->createElement('Address'));
//array of address objects should go here

$test1 = $dom->saveXML();
$sxe = simplexml_load_string($test1);

if ($sxe === false) {
echo 'Error while parsing the document';
    exit;
}

    $dom_sxe = dom_import_simplexml($sxe);
    if (!$dom_sxe) {
       echo 'Error while converting XML';
       exit;
    }

    $dom = new DOMDocument('1.0', 'utf-8');
    $dom_sxe = $dom->importNode($dom_sxe, true);
    $dom_sxe = $dom->appendChild($dom_sxe);

    echo $dom->save('application.xml');

これにより、XML で次のように出力されます。

<Add>
<pCase>
    <LeadGenID>22</LeadGenID>
    <Debtor>
        <Addresses><Address/></Addresses>
    </Debtor>
</pCase>

完全な出力が次のようになるように、配列をこの XML に出力する必要もあります。

<Add>
<pCase>
    <LeadGenID>22</LeadGenID>
    <Debtor>
        <Addresses>
            <Address>
                <Street>Some street</Street>
                <Postcode>Some postcode</Postcode>
            </Address>
        </Addresses>
    </Debtor>
</pCase>

私はこれを使用してこれを達成しようとしました

$address_array = array (
    $_POST['Street'] => 'Street',
    $_POST['Postcode'] => 'Postcode'
);
$xml = new SimpleXMLElement('<Address/>');
array_walk_recursive($address_array, array ($xml, 'addChild'));

しかし、この時点で私は完全に迷っています。提供された API は、控えめに言ってもドキュメントがまばらですが、それに近づいていますが、ゲートウェイの配列としてアドレスを入力する必要があります。私は主にフロントエンド開発者であり、通常は PHP で単純な連絡フォームなどしか作成していないため、PHP は初めてです。

上記の XML の例を出力するにはどうすればよいですか?

ありがとう

4

2 に答える 2

0

私が見つけたランダムな奇妙なもの:

  • から始めnew SimpleXMLElement('<Address/>')ますが、ルートノードは<Addresses>
  • $Addressどこからともなく現れた変数
  • $domどこからともなく現れた物体
  • あなたはどれを呼び出しますcreateTextNode()
    1. SimpleXML メソッドではなく、DOMDocument メソッドです
    2. 引数として文字列が必要ですが、SimpleXMLElementインスタンスが渡されます
    3. テキストノードを作成します
于 2013-02-18T15:47:00.997 に答える
0

http://www.lalit.org/lab/convert-php-array-to-xml-with-attributes/をご覧ください 。xml への配列が必要な場合は、非常に小さくて使いやすいライブラリです。

于 2013-02-19T14:40:28.533 に答える