php如何生成xml文件

<?xmlversion="1.0"?><newsmodule><yearname="最新动态"><news><date>01-24</date><title><![CD... <?xml version="1.0"?>
<newsmodule>
<year name="最新动态">
<news>
<date>01-24</date>
<title><![CDATA[最新动态]]></title>
<info>
<![CDATA[ 表面采用进口楸木木皮拼贴成精美的拼花,自然清晰的木材纹理得到完美的呈现,各种材质的合理搭配缔造了雅意系列精致的家具产品。
]]></info>
</news>

</year>
</newsmodule>

要生成这样一个xml文件,php要怎么写代码
展开
 我来答
常建强5802
2011-02-21
知道答主
回答量:21
采纳率:0%
帮助的人:25.2万
展开全部
<?php
#使用dom生成xml,注意生成的xml中会没有空格。
$dom=new DOMDocument('1.0','utf-8');
$path="test.xml"; // $path 为xml文件的存储路径。

$module=$dom->createElement('newmodule');// root node
$dom->appendChild($module);

$year=$dom->createElement('year'); // add attribute node
$name=$dom->createAttribute('name');
$name->nodeValue="最新动态";
$year->setAttributeNode($name);
$module->appendChild($year);

$news=$dom->createElement('news');
$year->appendChild($news);

$date=$dom->createElement('date');
$date_value=$dom->createTextNode('01-24');
$date->appendChild($date_value);
$news->appendChild($date);

$title=$dom->createElement('title');
$title_value=$dom->createTextNode('<![CDATA[最新动态]]>');
$title->appendChild($title_value);
$news->appendChild($title);

$info=$dom->createElement('info');
$info_value=$dom->createTextNode('<![CDATA[ 表面采用进口楸木木皮拼贴成精美的拼花,自然清晰的木材纹理得到完美的呈现,各种材质的合理搭配缔造了雅意系列精致的家具产品。
]]>');
$info->appendChild($info_value);
$news->appendChild($info);

echo $dom->saveXML();
$dom->save($path);
?>
百度网友40476f1
2011-02-18 · TA获得超过195个赞
知道小有建树答主
回答量:242
采纳率:0%
帮助的人:189万
展开全部
大分类,两种:直接输出和使用xml解析类。
直接输出,自己看着办和输出html一样。
xml解析类 simplexml和xmldom两种,自己选择吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
雨林雨林9876
2011-02-18 · TA获得超过157个赞
知道小有建树答主
回答量:148
采纳率:0%
帮助的人:162万
展开全部
给你一个我调用数据库生成的范例,你自己修改一下吧
<?php
$str = "SELECT distinct(loc),lastmod,changefreq,priority,picture,title FROM `sitemap_url` group by loc order by status";
$result = mysql_query($str) or die("Invalid query: " . mysql_error());
if($result)
{
$doc = new DOMDocument('1.0', 'utf-8');
$doc -> formatOutput = true;

$urlset = $doc ->createElement('urlset');
$xmlns = $doc ->createAttribute('xmlns');
$xmlns_img = $doc ->createAttribute('xmlns:image');
$xmlnsstr = $doc ->createTextNode("http://www.sitemaps.org/schemas/sitemap/0.9");
$xmlns_imgstr = $doc ->createTextNode("http://www.google.com/schemas/sitemap-image/1.1");
$xmlns ->appendChild($xmlnsstr);
$xmlns_img ->appendChild($xmlns_imgstr);
$urlset ->appendChild($xmlns);
$urlset ->appendChild($xmlns_img);

while($arr = mysql_fetch_array($result))
{
$url = $doc ->createElement('url');
$loc = $doc ->createElement('loc');
$lastmod = $doc ->createElement('lastmod');
$changefreq = $doc ->createElement('changefreq');
$priority = $doc ->createElement('priority');
$loc_c = $doc ->createTextNode($arr['loc']);
$loc ->appendChild($loc_c);
$lastmod_c = $doc ->createTextNode($arr['lastmod']);
$lastmod ->appendChild($lastmod_c);
$changefreq_c = $doc ->createTextNode($arr['changefreq']);
$changefreq ->appendChild($changefreq_c);
$priority_c = $doc ->createTextNode($arr['priority']);
$priority ->appendChild($priority_c);
$urlset ->appendChild($url);
$url ->appendChild($loc);
if($arr['picture'])
{
$title = $arr['title'];
$imgtext = $arr['picture'];
$sql = "select picture from sitemap_url where title='$title'";
$result2 = mysql_query($sql);
while($arr2 = mysql_fetch_array($result2))
{
$image_image = $doc ->createElement('image:image');
$image_loc = $doc ->createElement('image:loc');
$image_image_c = $doc ->createTextNode($arr2['picture']);
$image_loc_c = $doc ->createTextNode($title);
$image_image->appendChild($image_image_c);
$image_loc->appendChild($image_loc_c);
$url ->appendChild($image_image);
$url ->appendChild($image_loc);
}
}
$url ->appendChild($lastmod);
$url ->appendChild($changefreq);
$url ->appendChild($priority);

}

$doc ->appendChild($urlset);
$doc -> save("sitemap.xml");
}
?>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mxohf51
2011-02-19 · 超过12用户采纳过TA的回答
知道答主
回答量:101
采纳率:0%
帮助的人:0
展开全部
如果你用的是php5的话,可能得看看

php5和php6在unicode上的设定是有区别的,php6扩大了php5支持unicode的特性。
关于转码:

转码时可能要安装iconv:

php帮助网站:

关于文件内容写入的例子:

根据你的要求,如果要保存成unicode的xml文件的话可能麻烦点,看你的php是哪个版本的,有没有iconv库什么的。
<?php
//gb2312转换为unicode
function gb2un($g)//传入gb2312字符串返回unicode码
{
preg_match_all("/[\x80-\xff]?./",$g,$ar);
$str = "";
foreach($ar[0] as $v)
{
$str = $str."&#".utf8_unicode(iconv("gb2312","utf-8",$v)).";";
}
return $str;
}
$myString = gb2un("123我");
$fh=fopen('test.txt',"w");
fwrite($fh,unicode_encode($myString));
fclose($fh);
?>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
犀利且认真的小焰火6297
2011-02-18 · 超过42用户采纳过TA的回答
知道答主
回答量:140
采纳率:0%
帮助的人:100万
展开全部
php 有专门的XML函数组,你看下就知道了,很简单的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式