2013-03-17 143 views
0

我试图用XML输出一个PHP脚本的结果,但不是很好的结果。以XML格式输出PHP

这是一条线的XML文件,我得到(没有错误消息)

<?xml version="1.0" encoding="UTF-8"?> 

,这是我希望看到

<data> 
    <thread> 
     <id>my data here</id> 
     <author> 
      <name>my data here/name> 
      <url>my data here</url> 
      <id>my data here</id> 
     </author> 
     <title>my data here</title> 
     <reactions>my data here</reactions> 
     <dislikes>my data here</dislikes> 
     <userScore>my data here</userScore> 
     <createdAt>my data here</createdAt> 
     <slug>my data here</slug> 
     <postNumber>my data here</postNumber> 
     <link>my data here</link> 
     <likes>my data here</likes> 
     <message>my data here</message> 
     <category>my data here</category> 
     <score>my data here</score> 
     <categoryLink>my data here</categoryLink> 
    </thread>   
</data> 

这是我的代码是什么:

//Create XML 

$xml = new DOMDocument("1.0", 'UTF-8'); 

$root = $xml->createElement("data"); 
$xml->appendChild($root); 

$thread = $xml->createElement("thread"); 


$threadID = $xml->createElement("id"); 
$threadID->appendChild($xml->createTextNode($details->id)); 
$thread->appendChild($threadID); 

$author = $xml->createElement("author");       
$thread->appendChild($author); 

$authorName = $xml->createElement("name"); 
$authorName->appendChild($xml->createTextNode($parsed_authorName)); 
$author->appendChild($authorName); 

$authorUrl = $xml->createElement("url"); 
$authorUrl->appendChild($xml->createTextNode($parsed_authorUrl)); 
$author->appendChild($authorUrl); 

$authorID = $xml->createElement("id"); 
$authorID->appendChild($xml->createTextNode($details->author)); 
$author->appendChild($authorID); 

$threadTitle = $xml->createElement("title"); 
$threadTitle->appendChild($xml->createTextNode($details->title)); 
$thread->appendChild($threadTitle); 

$threadReactions = $xml->createElement("reactions"); 
$threadReactions->appendChild($xml->createTextNode($details->reactions)); 
$thread->appendChild($threadReactions); 

$threadDislikes = $xml->createElement("dislikes"); 
$threadDislikes->appendChild($xml->createTextNode($details->dislikes)); 
$thread->appendChild($threadDislikes); 

$threadUserScore = $xml->createElement("userScore"); 
$threadUserScore->appendChild($xml->createTextNode($details->userScore)); 
$thread->appendChild($threadUserScore); 

$threadCreatedAt = $xml->createElement("createdAt"); 
$threadCreatedAt->appendChild($xml->createTextNode($details->createdAt)); 
$thread->appendChild($threadCreatedAt); 

$threadSlug = $xml->createElement("slug"); 
$threadSlug->appendChild($xml->createTextNode($details->slug)); 
$thread->appendChild($threadSlug); 

$threadPostNumber = $xml->createElement("postNumber"); 
$threadPostNumber->appendChild($xml->createTextNode($details->posts)); 
$thread->appendChild($threadPostNumber); 

$threadLink = $xml->createElement("link"); 
$threadLink->appendChild($xml->createTextNode($details->link)); 
$thread->appendChild($threadLink); 

$threadLikes = $xml->createElement("likes"); 
$threadLikes->appendChild($xml->createTextNode($details->likes)); 
$thread->appendChild($threadLikes); 

$threadMessage = $xml->createElement("likes"); 
$threadMessage->appendChild($xml->createTextNode($parsed_threadMessage)); 
$thread->appendChild($threadMessage); 

$threadCategory = $xml->createElement("category"); 
$threadCategory->appendChild($xml->createTextNode($details->category)); 
$thread->appendChild($threadCategory); 

$threadScore = $xml->createElement("likes"); 
$threadScore->appendChild($xml->createTextNode($parsed_threadScore)); 
$thread->appendChild($threadScore); 

$threadCategoryLink = $xml->createElement("likes"); 
$threadCategoryLink->appendChild($xml->createTextNode($parsed_threadCategoryLink)); 
$thread->appendChild($threadCategoryLink); 

$thread->appendChild($root); 

$xml->formatOutput = true; 

echo "<xmp>". $xml->saveXML() ."</xmp>"; 

$xml->save("test1.xml") or die("Error"); 

可能是我添加XML元素的顺序是错误的?

+1

到最后,你写'$ thread-> appendChild($ root);',我想这是'$ root-> appendChild($ thread);' – MatRt 2013-03-17 23:04:16

回答

1

接近结束时,你写

$thread->appendChild($root); 

我觉得这是

$root->appendChild($thread); 

因为你想你的线程节点附近添加到根节点

+0

谢谢!这解决了。 – CptNemo 2013-03-18 00:58:33