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

PHP
php面向对象全攻略 (十五) 多态的应用
php面向对象全攻略 (十六) 对象的串行化
php面向对象全攻略 (十七) 自动加载类
PHP parse_url 一个好用的函数
PHP 字符串分割和比较
全世界最小的php网页木马一枚 附PHP木马的防范方法
PHP 日期加减的类,很不错
PHP 日期时间函数的高级应用技巧
PHP获取163、gmail、126等邮箱联系人地址【已测试2009.10.10】
Ha0k 0.3 PHP 网页木马修改版
PHP iconv 函数转gb2312的bug解决方法
关于页面优化和伪静态
使用zend studio for eclipse不能激活代码提示功能的解决办法
PHP 身份验证方面的函数
基于OpenCV的PHP图像人脸识别技术
用mysql触发器自动更新memcache的实现代码
php 数学运算验证码实现代码
PHP网站开发方案实例
PHP教程:挖掘细节提升网站性能
搜索引擎技术核心揭密(PHP)

PHP 中的 Php与java结合解析xml


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

作者:雨伞(geezer)
2004/12/22 
QQ:9986986 MSN:[email protected]

首先如果你对JAVA与PHP不感兴趣或者说也不打算学习两者的话请不要浪费时间在这里。

请先安装JAVA的执行环境与PHP结合,具体参考http://www.phpx.com/happy/thr78795.html或者下载http://www.javax.org/old/download/JavaXml.rar
里面我写有个readme.txt说明文档,这个压缩包是个简单的例子。有其他问题请联系我。

一开始我想用PHP解析XML,但发现PHP要解析XML有点麻烦,好象PHP5比较方便了,但我这边没有装5,还是4.3。后来我看到IBM一篇文章讲到可以利用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
/*
作者:雨伞
时间:2004/12/28
*/

$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.*;
/*
作者:雨伞
时间:2004/12/28
*/
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