欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【Php利用java解析xml】,下面是详细的分享!
Php利用java解析xml
请先安装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();
}
}
以上所分享的是关于Php利用java解析xml,下面是编辑为你推荐的有价值的用户互动:
相关问题:java利用xmlparser解析字符串,哪位大侠有示例的?...
答:这个我不懂 >>详细
相关问题:利用DOM解析XML文件
答:给你一个解析的类吧(jdom自行下载): package com.parxml; import org.jdom.*; import org.jdom.input.*; import java.io.*; import java.util.*; /** * * Description:本类实现对XML的解析操作 * * * Copyright: Copyright (c) 2007 * * * Co... >>详细
相关问题:Java 利用 doum4j 解析XML 字符串
答:public static void main(String args[]) { StringBuffer text = new StringBuffer(); text.append(""); text.append(""); text.append(""); text.append("#SS=20141111095510912#MB=20141111175508842"); text.append("CDM"); text.append("IOS... >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
