我正在尝试从数据库创建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();
答案 0 :(得分: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
标签。
答案 1 :(得分: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>
答案 2 :(得分:0)
您告诉PHP添加<name>
孩子,但没有别的。
$xml->addChild("name", $b['name']);
在while循环中,您需要添加<AAA>
元素,然后添加子<name>
,<phone>
和<sex>
(等)元素。
答案 3 :(得分:0)
问题是改变这个
$xmlstr = "<?xml version='1.0' ?>\n"."<CUSTOMERS></CUSTOMERS>";
到这个
$xmlstr = = '<' . '?xml version='1.0' ?>\n"."<CUSTOMERS></CUSTOMERS>';
因为<?
弄乱了解析器。
此外,XML不喜欢大写字母,需要根源 - 即客户之间的东西。