1

重複の可能性:
XML フォーマットがうまく機能していない

データベースから XML ファイルを作成しようとしています。データベースには、名前、電話番号、性別が含まれています。すべてのユーザーの詳細を整形式の XML ファイルで取得したいと考えています。しかし、私は今得ています:

<CUSTOMERS>
    <name>AAA</name>
    <name>BBB</name>
</CUSTOMERS>

これは私のコードです:

$xmlstr = "<?xml version='1.0' ?>\n"."<CUSTOMERS></CUSTOMERS>";
$xml = new SimpleXMLElement($xmlstr);
while($b=$result->fetch_assoc()){

$xml->addChild("name", $b['name']);

}
return $xml->asXML();

以下に示すように出力を取得したいと思います

<CUSTOMERS>
<AAAA>
<name>AAA</name>
<phone>111</phone>
<sex>male</sex>
</AAA>
<BBBB>
<name>BBB</name>
<phone>222</phone>
<sex>female</sex>
</AAA>
</CUSTOMERS>

最新のコード

        $xmlstr = "<?xml version='1.0' ?>\n"."<CUSTOMERS></CUSTOMERS>";
        $xml = new SimpleXMLElement($xmlstr);

        while($b=$result->fetch_assoc()){


            $customer = $xml->addChild("customer");
            $customer->addChild("name", $b['name']);
            $customer->addChild("phone", $b['phone']);
            $customer->addChild("sex", $b['sex']);
            //$xml->addChild("place", $b['place']);
        }
        return $xml->asXML();
4

4 に答える 4

1

各顧客は、独自のタグである必要があります。

$d = simplexml_load_string('<?xml version="1.0" encoding="utf-8" ?><customers />');

$customer = $d->addChild('customer');
$customer->addChild('name', 'Jack');
// $customer->addChild('phone', '911');
// etc.
$customer = $d->addChild('customer');
$customer->addChild('name', 'John');

echo $d->asXML();

<?xml version="1.0" encoding="utf-8"?>
<customers>
  <customer><name>Jack</name></customer>
  <customer><name>John</name></customer>
</customers>

タグ名は顧客の名前ではなく、内部に含まれる情報の説明であることに注意してください。したがって、customerタグの使用。

于 2012-06-02T01:40:56.500 に答える
1

次のようにできるはずです。

$xml = new SimpleXMLElement("<customers></customers>");
while($b=$result->fetch_assoc()){
    $customer = $xml->addChild("customer");
    $customer->addChild("name", $b['name']);
    $customer->addChild("phone", $b['phone']);
    $customer->addChild("sex", $b['sex']);
}

出力:

<customers>
    <customer>
        <name>AAA</name>
        <phone>1234567</phone>
        <sex>f</sex>
    </customer>
</customers>
于 2012-06-02T01:41:19.790 に答える
0

PHPに<name>子を追加するように指示していますが、他には何もありません。

$xml->addChild("name", $b['name']);

<AAA>その while ループでは、要素を追加し、次に child <name><phone>、および<sex>(など) 要素を追加する必要があります。

于 2012-06-02T01:39:01.807 に答える
0

問題は、これを変更することです

$xmlstr = "<?xml version='1.0' ?>\n"."<CUSTOMERS></CUSTOMERS>"; 

これに

$xmlstr = = '<' . '?xml version='1.0' ?>\n"."<CUSTOMERS></CUSTOMERS>';

パーサーを<?台無しにします。

また、XML は大文字を嫌い、ルートを必要とします。つまり、顧客の間の何かです。

于 2012-06-02T01:43:08.567 に答える