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

PHP
利用客户端缓存对网站进行优化的原理分析
php生成随机数或者字符串的代码
php include,include_once,require,require_once
php 特殊字符处理函数
php让图片可以下载的代码
网友原创的PHP模板类代码
wiki-shan写的php在线加密的解密程序
php chr() ord()中文截取乱码问题解决方法
php+AJAX传送中文会导致乱码的问题的解决方法
php面向对象的方法重载两种版本比较
在服务端进行目录建立、删除,文件上传、删除的过程的php代码
php递归列出所有文件和目录的代码
php获取某个目录大小的代码
php目录管理函数小结
Zend Guard一些常见问题解答
fleaphp下不确定的多条件查询的巧妙解决方法
PHP下10件你也许并不了解的事情
PHP常用函数小技巧
php5 pdo新改动加载注意事项
php5新改动之短标记启用方法

PHP实现JAVA的XStream (PHP)


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