php生成xml文件的问题

时间:2022-10-09 12:00:04
 希望的xml结构是
<root>
  <line>
     <point id=…… />
     <point id=…… />
  <line>
     <point id=…… />
     <point id=…… />

代码如下
$dom = new DOMDocument("1.0"); 
$node = $dom->createElement("root"); 
$parnode = $dom->appendChild($node); 

for($i=0;$i<n;$i++)
{
  $node_line = $dom->createElement("line"); 
  $parnode_line = $node->appendChild($node_line);
 while ($row = @mysql_fetch_assoc($result))
  {   
    $node_point = $dom->createElement("point");   
    $newnode = $node_line->appendChild($node_point);    
    $newnode->setAttribute("id",$row['id']); 
  }
}
但总是报“XML 文档只能有一个顶层元素”,谁能告诉我是哪里错了?应该怎么写?

13 个解决方案

#1


看看这里

http://topic.csdn.net/t/20031230/21/2619527.html

#2


<root>
  <line>
  <point id=…… />
  <point id=…… />
  </line> //这里总要关闭吧?
  <line>
  <point id=…… />
  <point id=…… />

#3


引用 2 楼 yangball 的回复:
<root>
  <line>
  <point id=…… />
  <point id=…… />
  </line> //这里总要关闭吧?
  <line>
  <point id=…… />
  <point id=…… />
+

#4


标个记号,慢慢来看

#5


引用 2 楼 yangball 的回复:
<root>
  <line>
  <point id=…… />
  <point id=…… />
  </line> //这里总要关闭吧?
  <line>
  <point id=…… />
  <point id=…… />


额,我知道,简写了……这不是问题所在吧

#6


引用 1 楼 vipstar 的回复:
看看这里

http://topic.csdn.net/t/20031230/21/2619527.html


我知道根节点只能有一个,但我这样写为什么不是只有一个?

#7





#8


$node_line = $dom->createElement("line");  
$parnode_line = $node->appendChild($node_line);

你是要给root加子节点。
就该是:
$node_line = $dom->createElement("line");  
$parnode_line =  $parnode->appendChild($node_line);



$doc = new DOMDocument('1.0');
// we want a nice output
$doc->formatOutput = true;

$root = $doc->createElement('book');
$root = $doc->appendChild($root);

$title = $doc->createElement('title');
$title = $root->appendChild($title);

$text = $doc->createTextNode('This is the title');
$text = $title->appendChild($text);

echo "Retrieving all the document:\n";
echo $doc->saveXML() . "\n";

echo "Retrieving only the title part:\n";
echo $doc->saveXML($title);

#10


路过,帮顶下

#11


<line>标签没有关闭

#12


<root>
  <line>
  <point id=…… />
  <point id=…… />


你忘记带 </Line>了

#13


你这个XML结构有错误。我刚在我博客里写了个操作XML的文章。
你参考下:http://www.hzl126.cn/?action=show&id=301

#1


看看这里

http://topic.csdn.net/t/20031230/21/2619527.html

#2


<root>
  <line>
  <point id=…… />
  <point id=…… />
  </line> //这里总要关闭吧?
  <line>
  <point id=…… />
  <point id=…… />

#3


引用 2 楼 yangball 的回复:
<root>
  <line>
  <point id=…… />
  <point id=…… />
  </line> //这里总要关闭吧?
  <line>
  <point id=…… />
  <point id=…… />
+

#4


标个记号,慢慢来看

#5


引用 2 楼 yangball 的回复:
<root>
  <line>
  <point id=…… />
  <point id=…… />
  </line> //这里总要关闭吧?
  <line>
  <point id=…… />
  <point id=…… />


额,我知道,简写了……这不是问题所在吧

#6


引用 1 楼 vipstar 的回复:
看看这里

http://topic.csdn.net/t/20031230/21/2619527.html


我知道根节点只能有一个,但我这样写为什么不是只有一个?

#7





#8


$node_line = $dom->createElement("line");  
$parnode_line = $node->appendChild($node_line);

你是要给root加子节点。
就该是:
$node_line = $dom->createElement("line");  
$parnode_line =  $parnode->appendChild($node_line);



$doc = new DOMDocument('1.0');
// we want a nice output
$doc->formatOutput = true;

$root = $doc->createElement('book');
$root = $doc->appendChild($root);

$title = $doc->createElement('title');
$title = $root->appendChild($title);

$text = $doc->createTextNode('This is the title');
$text = $title->appendChild($text);

echo "Retrieving all the document:\n";
echo $doc->saveXML() . "\n";

echo "Retrieving only the title part:\n";
echo $doc->saveXML($title);

#9


#10


路过,帮顶下

#11


<line>标签没有关闭

#12


<root>
  <line>
  <point id=…… />
  <point id=…… />


你忘记带 </Line>了

#13


你这个XML结构有错误。我刚在我博客里写了个操作XML的文章。
你参考下:http://www.hzl126.cn/?action=show&id=301