当前位置: 首页 > 图文教程 > 网络编程 > PHP > Php利用java解析xml

PHP
php基础知识:类与对象(5) static
谈谈新手如何学习PHP
Breeze 文章管理系统 v1.0.0正式发布
缓存技术详谈—php
php 进阶:实现无限分类
落伍首发 php+mysql 采用ajax技术的 省 市 地 3级联动无刷新菜单 源码
PHP读MYSQL中文乱码的解决方法
亲密接触PHP之PHP语法学习笔记1
IIS环境下快速安装、配置和调试PHP5.2.0
转PHP手册及PHP编程标准
PR值查询 | PageRank 查询
PHP函数utf8转gb2312编码
PHP 模板高级篇总结
PHP 编程请选择正确的文本编辑软件
使用 MySQL 开始 PHP 会话
PHP 的几个配置文件函数
剖析 PHP 中的输出缓冲
Windows2003 下 MySQL 数据库每天自动备份
30分钟学会用PHP写带数据库的简单通讯录
php下看实例学正则表达式

PHP 中的 Php利用java解析xml


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 253 ::
收藏到网摘: n/a

请先安装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,内容如下:
<?xmlversion="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=newJava("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。
importorg.jdom.*;
importorg.jdom.output.*;
importorg.jdom.input.*;
importjava.io.*;
importjava.util.*;
publicclassJavaXml{
publicStringpath=null;
publicStringXmlFileName=null;
publicSAXBuildersax=null;
publicDocumentdoc=null;
publicElementroot=null;
publicListxlist=null;
publicElemente=null;
publicElementvalue=null;
publicStringgetTest(){
returnnewString("haha");
}
publicJavaXml(){
}
publicStringinit(){
InputStreamis=getClass().getResourceAsStream("global.properties");
PropertiesdbProps=newProperties();
try{
dbProps.load(is);
}
catch(Exceptione){
return("errorfile");
}
this.path=dbProps.getProperty("XmlPath");
return("ok");
}
publicvoidget(intchild){
this.e=(Element)xlist.get(child);
}
publicStringgetValue(Stringname){
this.value=e.getChild(name);
returnthis.value.getText();
}
publicvoidsetValue(Stringname,Stringvalue)throwsException{
this.value=e.getChild(name);
this.value.setText(value);
XMLOutputterxmlout=newXMLOutputter();
xmlout.output(doc,newFileOutputStream(path+XmlFileName));
}
publicvoidParse(StringXmlFileName)
throwsException
{
this.XmlFileName=XmlFileName;
this.sax=newSAXBuilder();
this.doc=sax.build(newFileInputStream(path+XmlFileName));
this.root=doc.getRootElement();
this.xlist=root.getChildren();
}
}