使用 PHP 创建 XML 文件


XML file creation using PHP

可能的重复项:
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();

每个客户都应该在自己的标签中:

$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标签。

你应该能够这样做:

$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>

你告诉PHP添加<name>子项,但没有别的。

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

在 while 循环中,您需要添加 <AAA> 元素,然后添加子元素 <name><phone><sex>(等)元素。

问题是要改变这个

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

对此

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

<?弄乱解析器时。

此外,XML不喜欢大写字母,需要一个根 - 即客户之间的某些东西。