|
|
|
php利用java解析xml |
|
|
| http://www.iyit.net 日期:2005-11-24 17:26:29 来源:易特网络技术 点击: |
请先安装java的执行环境与php结合,具体参考http://www.phpx.com/happy/thr78795.html 或者下载http://www.javax.org/download/php_java.rar 里面我写有个readme.txt说明文档,这个压缩包是个简单的例子。 要下载我的java源码请到http://www.javax.org/download/javaxml.rar 有其他问题请到http://www.javax.org/提问。
一开始我想用php解析xml,但发现php要解析xml有点麻烦,好象php5比较方便了,但我这边没有装5,还是4.3。后来我看到ibm一篇文章(http://www-900.cn.ibm.com/developer...kit/index.shtml)讲到可以利用java来做,所以我现在就试验了一下。 要解析的xml文件:first.xml,内容如下: <?xml version="1.0" encoding="utf-8"?> <product> <hello> <name>小曾</name> <age>20</age> </hello> <hello> <name>雨伞</name> <age>20</age> </hello> </product> 其中<product>是根,<hello>是节点,一共有两个,name值名字不一样,一个是小曾一个是雨伞,年龄一样。 下面看php解析时候的文件: <?php $javaxml = new java("javaxml"); //这里是生成一个我写的java解析xml数据的类 $javaxml->init(); //这里为初始化,比如取global.properties文件里的xml文件目录(当然你下载了例子以后要改成你的xml文件目录) $javaxml->parse("first.xml"); //指定要解析的文件,相对于global.properties文件里指定的目录下 $javaxml->get(0); //这里为取得第一个节点 echo $javaxml->getvalue("name")."<br>"; //取得第一个节点name标签值 echo $javaxml->getvalue("age")."<br>"; //取得第一个节点age标签值 $javaxml->setvalue("name","大头爸爸"); //设置第一个节点name标签值为大头爸爸 $javaxml->get(1); //这里为取得第二个节点 echo $javaxml->getvalue("name")."<br>"; //取得第二个节点name标签值 echo $javaxml->getvalue("age")."<br>"; //取得第二个节点age标签值 ?>
$javaxml->get(0);取得节点位置,比如我的xml文件有两组<hello>,这里get(0)的话就是取第一组的<hello> ,get(1)就是取第二组的<hello>. 最后输出是 小曾 20 雨伞 20 因为$javaxml->setvalue("name","大头爸爸"); 这句修改了第一个节点的name标签的值,xml文件已经被更新过了,所以当再执行一次这个php文件的时候结果会成为 大头爸爸 20 雨伞 20
以上简单几句就解析完了,下面是我的java类,里面用到了jdom来解析xml。 import org.jdom.* ; import org.jdom.output.* ; import org.jdom.input.* ; import java.io.* ; import java.util.*; public class javaxml { public string path=null; public string xmlfilename=null; public saxbuilder sax=null; public document doc=null; public element root=null; public list xlist=null; public element e=null; public element value=null; public string gettest(){ return new string("haha"); } public javaxml(){ } public string init(){ inputstream is = getclass().getresourceasstream("global.properties"); properties dbprops = new properties(); try { dbprops.load( is ) ; } catch ( exception e ) { return ("error file"); } this.path=dbprops.getproperty("xmlpath"); return ("ok"); } public void get(int child){ this.e=(element)xlist.get(child); } public string getvalue(string name){ this.value=e.getchild(name); return this.value.gettext(); } public void setvalue(string name,string value)throws exception{ this.value=e.getchild(name); this.value.settext(value); xmloutputter xmlout=new xmloutputter(); xmlout.output(doc,new fileoutputstream(path+xmlfilename)); } public void parse(string xmlfilename) throws exception { this.xmlfilename=xmlfilename; this.sax=new saxbuilder(); this.doc=sax.build(new fileinputstream(path+xmlfilename)); this.root=doc.getrootelement(); this.xlist=root.getchildren(); } }
|
上一篇:使用php实现动态网页
下一篇:mysql数据库基础教程
[发送给好友] [打印本页] [关闭窗口] [返回顶部] 转载请注明来源:http://www.iyit.net |
|
| 特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。 |
| 责任编辑: |
投稿作者: 易特网络技术 |
| 信息来源: 易特网络技术 |
录入时间: 2005-11-24 17:26:29 |
| 浏览次数: |
投稿信箱: shtghy@163.com |
|
|
|
|
|