如何从php中的文本文件中的文本中输出xml?
我有一个代码,但它给我带来错误“文档末尾的额外内容”。
以下是我的代码:
<?php
header('Content-Type: application/xml');
$lines = file('file.txt');
echo '<?xml version="1.0" encoding="UTF-8"?>';
foreach($lines as $line){
$output = '<url><loc>http://example.com/'.$line.'.html</loc></url>';
echo $output;
}
这是示例文本文件:
page1
page2
page3
page4
示例输出:
<url>
<loc>http://example.com/page1.html</loc>
</url>
<url>
<loc>http://example.com/page2.html</loc>
</url>
<url>
<loc>http://example.com/page3.html</loc>
</url>
<url>
<loc>http://example.com/page4.html</loc>
</url>
我需要将它们用于sitemap.xml
答案 0 :(得分:1)
您可以在php中使用file_put_contents写入文件
答案 1 :(得分:1)
XML错误&#34;文档末尾的额外内容&#34; 非常简单。根据定义,有效的XML DOM必须只有一个单根根,它包含整个数据集。你没有这个。你的输出是:
<?xml version="1.0"?>
<url>
<loc>http://example.com/page1.html</loc>
</url>
<url>
<loc>http://example.com/page2.html</loc>
</url>
<url>
<loc>http://example.com/page3.html</loc>
</url>
<url>
<loc>http://example.com/page4.html</loc>
</url>
有效的XML将是:
<?xml version="1.0" encoding="UTF-8"?>
<sitemap>
<url>
<loc>http://example.com/page1.html</loc>
</url>
<url>
<loc>http://example.com/page2.html</loc>
</url>
<url>
<loc>http://example.com/page3.html</loc>
</url>
<url>
<loc>http://example.com/page4.html</loc>
</url>
</sitemap>
因此,您的案例中的简单修复将是:
header('Content-type: application/xml');
echo '<?xml version="1.0" encoding="UTF-8"?>
<sitemap>';
$lines = file(
'file.txt',
//do not line-breaks to XML values, and skip empty values, to avoid empty tags
FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES
);
foreach ($lines as $line)
{
echo '<url><loc>http://example.com/', $line, '.html'</loc></url>';
}
echo '</sitemap';
但实际上,我建议您考虑如何最好地构建DOM,以及如何使用DOM解析器可靠地构建标记。之后,我强烈建议您将文件写入磁盘,而不是每次需要时都将其生成。