当前位置: 首页 > 图文教程 > 网络编程 > PHP > PHP实现JAVA的XStream (PHP)

PHP
服务器端解压缩zip的脚本
[原创]PHP中通过ADODB库实现调用Access数据库之修正版本
PHP+JS无限级可伸缩菜单详解(简单易懂)
实例(Smarty+FCKeditor新闻系统)
影响PHP+MYSQL执行速度的写法对比
新手配置 PHP 调试环境(IIS+PHP+MYSQL)
增加反向链接的101个方法 站长推荐
PHP音乐采集(部分代码)
用PHPdig打造属于你自己的Google[图文教程]
几篇关于无限分类算法的文章
解决GD中文乱码问题
浅析PHP水印技术
珊瑚虫IP库浅析
excellent!:ASCII Art(由目标图象生成ascii)
用PHP实现Ftp用户的在线管理的代码
可定制的PHP缩略图生成程式(需要GD库支持)
15种PHP Encoder的比较
利用discuz自带通行证整合dedecms的方法以及文件下载
用PHP 快速生成 Flash 动画的方法
六酷社区论坛HOME页清新格调免费版 下载

PHP实现JAVA的XStream (PHP)


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

以下为引用的内容:
<?

// 目前实现了 Param, Map
function LogText($str){
    return $str;
}
class XStream
{
    var $objName;
    var $objParam = array ();
    var $objMap ;
    ### 取数据 ###
    function readXMLParam($file){
        try {
            $doc = &new DOMDocument();
            $doc->load($file);
            $objNames = $doc->getElementsByTagName( $this->objName );
            foreach ($objNames as $objName) {
                for($i=0;$i<count($this->objParam);$i++){
                    $returnParamsName = $this->objParam[$i];
                    $objParams = $objName->getElementsByTagName($returnParamsName);
                    $returnParams [$returnParamsName] =  $objParams->item(0)->nodeValue;
                }
                return $returnParams;
            }
            /*
            $doc = &new DOMDocument();
            $doc->load($file);
          
          
            $agentAgentInfos = $doc->getElementsByTagName( "agent.AgentInfo" );
          
            foreach ($agentAgentInfos as $agentAgentInfo) {
            $agentIds = $agentAgentInfo->getElementsByTagName( "agentId" );
            $agentId = $agentIds->item(0)->nodeValue;
            echo $i."=I:".$agentId; echo "<BR>n";
            $winCommissions = $agentAgentInfo->getElementsByTagName("winCommissions");
            foreach($winCommissions as $winCommission){
            $entrys = $winCommission->getElementsBYTagName("entry");
            $j = 0;
            for($k=0;$k<$entrys->length;$k++){
            $entry = $entrys->item($k);
            $strings = $entry->getElementsByTagName("string");
            echo $j."=J:".$strings->item(0)->nodeValue; echo "<br>n";
            $j++;
            }
            }
            $i++;
            }
            */
        }catch (Exception $e){
            LogText($e->getMessage());
        }
    }
    ### 取数据 ###
    function readXMLMap($file){
        try {
            $doc = &new DOMDocument();
            $doc->load($file);
            $objNames = $doc->getElementsByTagName( $this->objName );
            $objMapArr = $this->objMap;
            foreach ($objNames as $objName) {
                ### objMap 存在
                if(is_array($objMapArr)){
                    for(;$keyI=key($objMapArr);next($objMapArr)){
                        $returnObjMapName_i = $keyI;
                        $objMaps = $objName->getElementsByTagName($keyI);
                        foreach($objMaps as $objMap){
                            $entrys = $objMap->getElementsBYTagName("entry");
                            for($j=0;$j<$entrys->length;$j++){
                                $entry = $entrys->item($j);
                                for($k=0;$k<count($objMapArr[$keyI][$j]);$k++){
                                    $returnObjMapName_k = $objMapArr[$keyI][$j][$k];
                                    $returnObjMapBodys = $entry->getElementsByTagName($returnObjMapName_k);
                                    $returnObjMaps[$returnObjMapName_i][$j][$returnObjMapName_k] = $returnObjMapBodys ->item(0)->nodeValue;
                                }
                            }
                        }
                    }

                }
            }
            return $returnObjMaps;
        }catch (Exception $e){
            LogText($e->getMessage());
        }
    }
    ### 写数据 ###
 
}
####### TEST #######
class TestXStream{
    function testReadXML(){
        $xstream = &new XStream();
        $file = "./test/getInfo.xml";
        $objName = "agent.AgentInfo";
        $xstream->objName = $objName;
        ### 测试Param ###
        $objParam = array("agentId","agentRole","credit");
        $xstream->objParam= $objParam;
        print_r($xstream->readXMLParam($file));
        ### 测试Map ###
        $objMap = array(
        "winCommissions" => array("0"=>array("string","big-decimal"),"1"=>array("string","big-decimal")),
        "loseCommissions" => array("0"=>array("string","big-decimal"),"1"=>array("string","big-decimal")),
        "shares" => array("0"=>array("string","big-decimal"),"1"=>array("string","big-decimal"))
        );
        $xstream->objMap = $objMap ;
        print_r($xstream->readXMLMap($file));
      
    }
}
### Main() ###
$testXStream = &new TestXStream();
$testXStream->testReadXML();
?>

PHP实现JAVA的XStream

以下为引用的内容:
<!-- XStream 的XML -->

<agent.AgentInfo>
<agentId>sm</agentId>
<agentRole>SUPER_MASTER</agentRole>
<assignedCredit>10000</assignedCredit>
<credit>999</credit>
<balance>91.01</balance>
<status>ACTIVE</status>
<winCommissions>
<entry>
<string>SH</string>
<big-decimal>0</big-decimal>
</entry>
<entry>
<string>SH2</string>
<big-decimal>1</big-decimal>
</entry>
</winCommissions>
<loseCommissions>
<entry>
<string>SH</string>
<big-decimal>0.4</big-decimal>
</entry>
</loseCommissions>
<shares>
<entry>
<string>SH</string>
<big-decimal>0.9</big-decimal>
</entry>
</shares>
<arrayTests>
<string>sm</string>
<string>SUPER_MASTER</string>
<string>10000</string>
<string>999</string>
<string>91.01</string>
<string>ACTIVE</string>
</arrayTests>
</agent.AgentInfo>