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

PHP
如何用PHP脚本和PEAR类创建ZIP档案文件
在线管理PHP网站文件
利用PHP代码实现网页自动判断转向
PHP程序中的特效应用 实用代码珍藏
如何使用PHP和PEAR进行不同时区的转换
如何用php生成WAP页面
php:树形结构的算法 4
php:树形结构的算法 3
php:树形结构的算法 2
php:树形结构的算法1
apache 环境下 php 的配置
php编写大型网站问题集
php中文乱码问题及解决方法
草根的进化 PHP语言发展简史
测试 Apache Web 和 PHP 应用程序服务器
用php实现简单的滑动菜单
php分页类
基于PHP和AJAX创建RSS聚合器
PHP下一代的五个framework介绍
搜索引擎技术核心揭密(PHP版)

PHP 中的 Php利用java解析xml


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 50 ::
收藏到网摘: 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();
}
}