Heim > php教程 > php手册 > Hauptteil

Php利用java解析xml

WBOY
Freigeben: 2016-06-21 09:09:26
Original
889 Leute haben es durchsucht

xml

作者: 雨伞
首先如果你对JAVA不感兴趣或者说你的主机不支持JAVA或者你也不打算学习的话请不要浪费时间在这里。

请先安装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,内容如下:



小曾
20


雨伞
20


其中是根,是节点,一共有两个,name值名字不一样,一个是小曾一个是雨伞,年龄一样。

下面看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")."
"; //取得第一个节点name标签值
echo $JavaXml->getValue("age")."
"; //取得第一个节点age标签值
$JavaXml->setValue("name","大头爸爸"); //设置第一个节点name标签值为大头爸爸
$JavaXml->get(1); //这里为取得第二个节点
echo $JavaXml->getValue("name")."
"; //取得第二个节点name标签值
echo $JavaXml->getValue("age")."
"; //取得第二个节点age标签值
?>


$JavaXml->get(0);取得节点位置,比如我的XML文件有两组,这里get(0)的话就是取第一组的 ,get(1)就是取第二组的.

最后输出是
小曾
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.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();
}

}


如果还有什么不懂的请跟贴,这样子对新手不知道是更麻烦还是更方便了,请大家发表自己的意见,如果各位觉得可以的话我将继续完善那个JAVA类,提供更多的解析XML的功能。



Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!