我在将php中的sql查询中的数据转换为xml时遇到了严重问题。我总是收到错误:StartTag: invalid element name. The Start-Element is a Number
,我不知道这是否重要?!?
也许你们可以帮助我!!
PHP:
$query = "SELECT r.object_id,
t.term_taxonomy_id,
t.term_id,
t.taxonomy,
t.description,
p.post_date_gmt,
p.post_content,
p.post_title,
p.post_excerpt
FROM wp_posts p,
wp_term_taxonomy t,
wp_term_relationships r
WHERE r.object_id= p.id
AND t.term_taxonomy_id = r.term_taxonomy_id
AND p.post_status = 'publish'
AND p.post_type = 'post'
AND to_days(p.post_date_gmt) >= to_days(now()) - 120
ORDER BY p.post_date DESC";
// DB Connect
$connection = mysql_connect($server, $user, $password);
mysql_select_db($dbName, $connection);
$res = mysql_query($query);
// XML Output
$xml = '<?xml version="1.0" encoding="UTF-8"?>
<standing version="1.0">';
while ($row = mysql_fetch_assoc($res)){
$xml .= '
<'.$row['object_id'].'>
<term_taxonomy>'.$row['taxonomy'].'</term_taxonomy>
<description>'.$row['description'].'</description>
<post_date>'.$row['post_date_gmt'].'</post_date>
<post_content>'.$row['post_content'].'</post_content>
<post_title>'.$row['post_title'].'</pst_title>
<post_exerpt>'.$row['post_exerpt'].'</post_exerpt>
</'.$row['object_id'].'>
';
}
$xml.= '</standing>';
// Write to file
$file = 'News.xml';
if(is_file($file)) unlink($file);
$fp = fopen($file, "w+");
fwrite($fp, $xml);
fclose($fp);
mysql_close ($connection);
?>
答案 0 :(得分:3)
是。那很重要。 XML应始终以下列之一开头:
[A-Z] | “_”| [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]
(为了好的味道,建议标签名称以描述性词或缩写开头)
所以说w3。让它写出来。让它完成。
您应该能够替换(并使ID成为属性)
<object id="'.$row['object_id'].'">
/* step 2 */
</object>
答案 1 :(得分:1)
XML标记名称不能是数字,而是尝试
'<object id="' . $row['object_id'] . '">
答案 2 :(得分:0)
很可能是值object_id
。您正在使用此值创建元素名称。我假设object_id
是数字或guid,这不是可接受的元素名称。我建议在object_id前加o
来获取元素名称。