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

PHP
php sprintf()函数让你的sql操作更安全
php SQLite学习笔记与常见问题分析
使用PHP socke 向指定页面提交数据
jq的get传参数在utf-8中乱码问题的解决php版
PHP 得到根目录的 __FILE__ 常量
PHP 表单提交给自己
PHP4中session登录页面的应用
简单示例AJAX结合PHP代码实现登录效果代码
php+mysql写的简单留言本实例代码
php在线打包程序源码
php intval的测试代码发现问题
php5编程中的异常处理详细方法介绍
php include的妙用,实现路径加密
PHP中$_SERVER的详细参数与说明
php 全文搜索和替换的实现代码
PHP一些常用的正则表达式字符的一些转换
php自动跳转中英文页面
MySql中正则表达式的使用方法描述
说明的比较细的php 正则学习实例
新安装的MySQL数据库需要注意的安全知识

PHP 中的 Php利用java解析xml


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