探讨一道面试题目? 就是啊..应该怎么加..又不会重复根节点..并且可以使得php能循环读取xml...请问大家遇到这样的问题是怎么做的... 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <?xml version="1.0" encoding="gb2312"?><message><title>2323</title><author>23232</author><content>23232</content></message><message><title>1243214</title><author>23421</author><content>234243124</content></message>这个不是标准XML格式 $xmlfile.="<messages>.$nl; $xmlfile.="<message>".$nl; $xmlfile.="<title>".$title."</title>".$nl; $xmlfile.="<author>".$author."</author>".$nl; $xmlfile.="<content>".$Content."</content>".$nl; $xmlfile.="</message>".$nl; $xmlfile.="</messages>".$nl; $fp=fopen("messages.xml","a+"); fwrite($fp,$xmlfile); @fclose($fp); ---------------------------//这样生成的应该是标准的xml文档...如下:<?xml version="1.0" encoding="gb2312"?><messages><message><title>2323</title><author>23232</author><content>23232</content></message></messages>那我现在的疑问是,留言数据都保存在messages.xml 每次提交留言后,又会生成一样的,怎样避免重复生成根节点..php又能读取xml文档?不知道有没有好的方法?大家又都是怎么做的. 既然用xml,不建议用处理普通文本的方式生成xml文件,用dom等处理.如果用也可以,但是生成的文件当然要符合规范.你的文件只要外面加上一个<messages>节点就可以了.要追加的话,可以让文件指针往回移动后再写入.或者用替换也可以. 用Dom库生成是吗php5版本都支持这个吧。。 $title=trim($_POST['title']); $author=trim($_POST['author']); $Content=$_POST['EditorDefault']; $messages=array(); $messages[] = array( "title" => "$title", "author" => "$author", "content" => "$Content" ); $doc = new DOMDocument(); //创建DOM对象 $doc->formatOutput = true; $r = $doc->createElement( "messages" ); //建立根节点 $doc->appendChild( $r ); foreach( $messages as $message ) { $b = $doc->createElement( "message" ); // $title = $doc->createElement( "title" ); //建立子节点title $title->appendChild( $doc->createTextNode( $message['title'] ) ); $b->appendChild( $title ); $author = $doc->createElement( "author" ); //建立子节点author $author->appendChild( $doc->createTextNode( $message['author'] ) ); $b->appendChild( $author); $content = $doc->createElement( "content" ); //建立子节点content $content->appendChild( $doc->createTextNode( $message['content'] ) ); $b->appendChild( $content ); $r->appendChild( $b ); } echo $doc->saveXML(); //以上为用DOM生成的xml,我可以在IE里显示出来,值为: 7777 77777 查看源文件为如下:那怎么不显示77 而显示7777 77777 <?xml version="1.0"?><messages> <message> <title>77</title> <author>7777</author> <content>77777</content> </message></messages> 我现在想把这个xml文档保存下来,请问高手怎么做.值是由表单提交过来的,还有表单要是再输入值的话,会覆盖掉原来的内容..要每次提交的内容都生成在</message>后面...如:<?xml version="1.0"?><messages> <message> <title>77</title> <author>7777</author> <content>77777</content> </message><message> //第二次提交的内容 <title>55</title> <author>555</author> <content>5555</content> </message></messages> 留下你的email地址我传给你一个. [email protected] //谢谢 除了smarty外。其他都不是問題。。但是要點時間。。 建议楼主先把xml和dom了解一下,这个东西不难的 fseek -- 在文件指针中定位 谁帮我写几行简单的代码,我对PHP不了解 关于COOKIE的小问题 mysqli如何查看字段名?貌似没有mysqli_field_name这个函数! 帮忙看下关于数组的这个问题 解决大数量http请求问题,有过经验的人请进 关于php解释的问题 关于数组字符匹配的问题 php有几种方法可以调用外部函数或程序 关联表问题 sphinx到底支持中文分词吗 有没有办法将中文html转成pdf啊? 初学PHP,请教一问题
<message>
<title>2323</title>
<author>23232</author>
<content>23232</content>
</message>
<message>
<title>1243214</title>
<author>23421</author>
<content>234243124</content>
</message>这个不是标准XML格式
$xmlfile.="<message>".$nl;
$xmlfile.="<title>".$title."</title>".$nl;
$xmlfile.="<author>".$author."</author>".$nl;
$xmlfile.="<content>".$Content."</content>".$nl;
$xmlfile.="</message>".$nl;
$xmlfile.="</messages>".$nl; $fp=fopen("messages.xml","a+");
fwrite($fp,$xmlfile); @fclose($fp);
---------------------------//这样生成的应该是标准的xml文档...如下:
<?xml version="1.0" encoding="gb2312"?>
<messages>
<message>
<title>2323</title>
<author>23232</author>
<content>23232</content>
</message>
</messages>
那我现在的疑问是,留言数据都保存在messages.xml 每次提交留言后,又会生成一样的,怎样避免
重复生成根节点..php又能读取xml文档?不知道有没有好的方法?大家又都是怎么做的.
如果用也可以,但是生成的文件当然要符合规范.你的文件只要外面
加上一个<messages>节点就可以了.
要追加的话,可以让文件指针往回移动后再写入.
或者用替换也可以.
$author=trim($_POST['author']);
$Content=$_POST['EditorDefault'];
$messages=array();
$messages[] = array(
"title" => "$title",
"author" => "$author",
"content" => "$Content"
);
$doc = new DOMDocument(); //创建DOM对象
$doc->formatOutput = true;
$r = $doc->createElement( "messages" ); //建立根节点
$doc->appendChild( $r );
foreach( $messages as $message )
{
$b = $doc->createElement( "message" ); //
$title = $doc->createElement( "title" ); //建立子节点title
$title->appendChild(
$doc->createTextNode( $message['title'] )
);
$b->appendChild( $title );
$author = $doc->createElement( "author" ); //建立子节点author
$author->appendChild(
$doc->createTextNode( $message['author'] )
);
$b->appendChild( $author);
$content = $doc->createElement( "content" ); //建立子节点content
$content->appendChild(
$doc->createTextNode( $message['content'] )
);
$b->appendChild( $content );
$r->appendChild( $b );
}
echo $doc->saveXML(); //以上为用DOM生成的xml,我可以在IE里显示出来,值为: 7777 77777
查看源文件为如下:那怎么不显示77 而显示7777 77777 <?xml version="1.0"?>
<messages>
<message>
<title>77</title>
<author>7777</author>
<content>77777</content>
</message>
</messages>
我现在想把这个xml文档保存下来,请问高手怎么做.
值是由表单提交过来的,还有表单要是再输入值的话,会覆盖掉原来的内容..要每次提交的内容都生成在</message>后面...如:
<?xml version="1.0"?>
<messages>
<message>
<title>77</title>
<author>7777</author>
<content>77777</content>
</message>
<message> //第二次提交的内容
<title>55</title>
<author>555</author>
<content>5555</content>
</message>
</messages>
但是要點時間。。