2011-07-05 54 views
0

我有一個嚴重的問題,從數據從一個SQL查詢到XML到一個XML。我總是得到錯誤:StartTag: invalid element name. The Start-Element is a Number,我不知道這是否重要?!?PHP解析XML - 錯誤:StartTag:無效的元素名稱

也許你們可以幫助我!

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); 
?> 

回答

1

XML標籤名稱不能是數字,而不是嘗試

'<object id="' . $row['object_id'] . '"> 
2

是。這很重要。 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> 
0

這是最有可能的值object_id。您正在使用此值創建元素名稱。我假設object_id是數字或guid這不是一個可接受的元素名稱。我建議在object_id前加o以獲取元素名稱。

相關問題