我正在使用while循环创建XML,但是现在我需要在生成的XML之前加上XML标头信息和包装器标签,但我正努力使其正常工作,这是我的代码,
$result = mysql_query("SELECT * FROM users")
or die(mysql_error());
$row = mysql_fetch_array($result);
while ($row = mysql_fetch_array($result)) {
$pumaXML = "<userDetails>";
$pumaXML .= "<userID>".$row['uid']."</userID>";
$pumaXML .= "<userName>".$row['userName']."</userName>";
$pumaXML .= "<points>".$row['points']."</points>";
$pumaXML .= "<imageURL>".$row['imageURL']."</imageURL>";
$pumaXML .= "<thumbURL>".$row['thumbURL']."</thumbURL>";
$pumaXML .= "</userDetails>";
};
我似乎找不到解决方法,我也尝试制作一个函数,但是效果并不理想,这里是代码,
function createXML($result) {
while ($row = mysql_fetch_array($result)) {
$pumaXML = "<userDetails>";
$pumaXML .= "<userID>".$row['uid']."</userID>";
$pumaXML .= "<userName>".$row['userName']."</userName>";
$pumaXML .= "<points>".$row['points']."</points>";
$pumaXML .= "<imageURL>".$row['imageURL']."</imageURL>";
$pumaXML .= "<thumbURL>".$row['thumbURL']."</thumbURL>";
$pumaXML .= "</userDetails>";
};
return $pumaXML;
};
提前感谢!
这是使用DOM的方法:
function createUserDetailsXml(array $result) {
$dom = new DOMDocument;
$dom->formatOutput = TRUE; // enable automatic indenting
$dom->loadXML('<users/>'); // set root node
foreach($result as $row) {
// create user-details node
$user = $dom->createElement('user-details');
// create and append details to user-details node
$user->appendChild(
$dom->createElement('user-id', $row['uid']));
$user->appendChild(
$dom->createElement('user-name', $row['userName']));
$user->appendChild(
$dom->createElement('user-points', $row['points']));
$user->appendChild(
$dom->createElement('image-url', $row['imageURL']));
$user->appendChild(
$dom->createElement('thumb-url', $row['thumbURL']));
// add user-details node to XML document, e.g. users node
$dom->documentElement->appendChild($user);
};
return $dom->saveXML(); // returns the formatted XML
};
请注意,该函数希望您传递完整的结果数组,因此我可以使用以下方法进行测试:
$result = array(
array(
'uid' => 1,
'userName' => 'Gordon',
'points' => PHP_INT_MAX,
'imageURL' => 'http://example.com/gordon.jpg',
'thumbURL' => 'http://example.com/t_gordon.jpg'
),
array(
'uid' => 2,
'userName' => 'John <blink>"Frigging"</blink> Doe',
'points' => 0,
'imageURL' => 'http://example.com/johndoe.jpg',
'thumbURL' => 'http://example.com/t_johndoe.jpg'
)
);
echo createUserDetailsXml($result);
该函数将返回
<?xml version="1.0"?>
<users>
<user-details>
<user-id>1</user-id>
<user-name>Gordon</user-name>
<user-points>2147483647</user-points>
<image-url>http://example.com/gordon.jpg</image-url>
<thumb-url>http://example.com/t_gordon.jpg</thumb-url>
</user-details>
<user-details>
<user-id>2</user-id>
<user-name>John <blink>"Frigging"</blink> Doe</user-name>
<user-points>0</user-points>
<image-url>http://example.com/johndoe.jpg</image-url>
<thumb-url>http://example.com/t_johndoe.jpg</thumb-url>
</user-details>
</users>
请注意,DOM自动为您转义了John Doe名称中的特殊字符。DOM还将确保XML元素名称(或属性,如果使用它们)在语法上是有效的。它还添加了XML
Prolog。
问题内容: 我刚刚遇到了这段代码 并且认为, 必须 有一个比用无限循环更好的方法。 所以我尝试了: 显然有一个错误。 有什么方法可以避免在那种情况下使用? 编辑: 理想情况下,您要避免重复说两次…恕我直言,重复甚至比a还要糟糕,尤其是在语句很复杂的情况下。 问题答案: 如果您不对数据做任何奇特的事情,例如以后再阅读更多行,总会有:
问题内容: 上面给我一个错误,即“一个”不存在。不能以这种方式分配吗?我想为列表中的每个var分配一个递增编号。 问题答案: Python变量是值的 名称 。他们并没有真正“包含”这些价值观。 导致“ var”成为列表中每个元素的名称。在循环内,它不会影响列表:相反,它将导致不再是list元素的名称,而是开始成为当前名称的名称。 同样,当你创建列表,如果,而不是已经为值的名字,那么你可以不使用它们
问题内容: 在C语言中, 但是在Python中,似乎没有。 产生 ( 应该在上) 有解决方法吗? 问题答案: 使用中断:
我是helm的新手,我希望能够使用配置映射和共享环境变量将gitlab项目变量写入文件。 我为每个环境(其中
loop变量等同于具有真值的while循环( while true )。 这个循环中的语句将重复执行,直到我们使用break语句退出循环。 语法 (Syntax) 下面给出了CoffeeScript中while循环的循环替代语法。 loop statements to be executed repeatedly condition to exit the loop 例子 (Exam
只要给定条件为真,Perl编程语言中的while循环语句就会重复执行目标语句。 语法 (Syntax) Perl编程语言中while循环的语法是 - while(condition) { statement(s); } 这里的statement(s)可以是单个陈述或一个陈述块。 condition可以是任何表达。 当条件为真时,循环迭代。 当条件变为假时,程序控制将立即传递到循环之后的行。