ホームページ  >  記事  >  php教程  >  PhpはJavaを使用してXMLを解析します

PhpはJavaを使用してXMLを解析します

WBOY
WBOYオリジナル
2016-06-21 09:09:26868ブラウズ

xml

Author: Umbrella
まず、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 ;
こんにちは>

PHP が解析するときにファイルを確認します:

/*
作成者: Umbrella
時刻: 2004/12/28
*/

$JavaXml = new Java("JavaXml") //ここXML データを解析するために Java 用に書いたクラスを生成するためです
$JavaXml->init(); //ここでは、global.properties ファイル内の XML ファイル ディレクトリを取得するなどの初期化が行われます (もちろん変更する必要があります)サンプル XML ファイル ディレクトリをダウンロードした後、それを自分のものにします)
$JavaXml->Parse("first.xml") //global.properties ファイルで指定されたディレクトリを基準にして、解析するファイルを指定します
$JavaXml- >get(0); //最初のノード
echoを取得します $JavaXml->getValue("name")."
" //最初のノード
echoのnameタグ値を取得します$JavaXml->getValue(" age")."
"; //最初のノードの年齢ラベル値を取得します
$JavaXml->setValue("name","Big Head Daddy") / /最初のノードの名前ラベルの値を Big Head Dad に設定します
$JavaXml->get(1); //ここで 2 番目のノードを取得します
echo $JavaXml->getValue("name")."< ;br>"; //2 番目のノード名タグの値を取得します
echo $JavaXml->getValue("age")."
"; //2 番目のノードの age タグ値を取得します
?>


$JavaXml->get(0) ; たとえば、私の XML ファイルには の 2 つのグループがあります。 get(1) は 2 番目のグループの を取得します

最終的な出力は
Xiao Zeng
20
Umbrella
20

です $JavaXml->setValue("name","Big Head Dad") ); この文は最初のノードの name タグの値を変更する XML ファイルが更新されているので、この PHP ファイルを再度実行すると、結果は
Big Head Daddy
20
Umbrella
20


上記の分析は、いくつかの簡単な文で完了します。以下は、JDOM を使用して XML を解析する私の JAVA クラスです。

import org.jdom.* ;
import org.jdom.output.* ;
import org.jdom.input.* ;
import java.io.* ;
import java.util.*;
/*
Author : アンブレラ
時刻: 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 リスト xlist=null;
public 要素 e=null;
public 要素 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 ("エラー ファイル");
}
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)
例外をスローします
{
this.XmlFileName=XmlFileName;
this.sax=new SAXBuilder();
this.doc=sax.build(new FileInputStream(path +
this.xlist=root.getChildren();
}

}


まだ何も理解できない場合は、初心者にとってこれが面倒なのか便利なのかわかりませんが、可能だと思われる場合は、コメントを残してください。その JAVA クラスを改善し、XML を解析するためのより多くの機能を提供します。



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。