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

PHP
让我们来编写一些PHP实用的脚本
七种缓存使用武器 为网站应用和访问加速
动态网页PHP中引用&的使用注意事项
在PHP中全面阻止SQL注入式攻击
PHP自带可以代替echo调试的unit函数
小结:PHP动态网页程序优化及高效提速问题
php对特殊语句查询结果进行数组排序
实例:用PHP技术解决网站URL格式过长的问题
小结:PHP动态网页程序两个有用的小技巧
动态网页中直接不让访问PHP程序文件
网页实例:详细介绍用PHP来编写网页记数器
菜鸟学习:动态网页PHP基础学习笔记
利用Apache实现禁止图片盗链
PHP编程中常用的三则技巧
PHP制作的网站意见在线反馈表
大型Web需求解决方案 PHP定位突出
PHP实例:精确到每一秒钟的在线人数显示代码
实用:动态网页制作技术PHP的十个应用技巧
常见php页面漏洞分析及相关问题解决
PHP和MYSQL制作动态网站开发经验之谈

PHP实现JAVA的XStream (PHP)


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