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

PHP
PHP中for循环语句的几种“变态”用法
用PHP与XML联手进行网站开发
PHP程序漏洞产生的原因和防范方法
利用PHP编程防范XSS跨站脚本攻击
使用PHP往Windows系统中添加用户
PHP Shell的编写(改进版)
PHP开发中接收复选框信息的方法
PHP程序加速探索之服务器负载测试
PHP实现首页自动选择语言转跳
十天学会php之第一天
十天学会php之第二天
十天学会php之第三天
十天学会php之第四天
十天学会php之第五天
十天学会php之第六天
十天学会php之第七天
十天学会php之第八天
十天学会php之第九天
十天学会php之第十天
Web开发源代码:PHP生成静态页面的类

PHP实现JAVA的XStream (PHP)


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