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

PHP
PHP实例教程:Output Control输出函数
memcached和mysql主从环境下PHP开发
基于LAMP架构设计的WEB框架
PHP代码:验证IPV6地址是否合法的正则
PHP环境快读搭建绿色软件包PHPnow
PHP教程:$_SERVER的详细参数整理
php获取url字符串截取路径的文件名和扩展名的函数
在命令行下运行PHP脚本[带参数]的方法
PHP 实用代码收集
PHP 时间转换Unix时间戳代码
关于php fread()使用技巧
PHPMailer 中文使用说明小结
php addslashes和mysql_real_escape_string
php cout<<的一点看法
PHP 变量的定义方法
php学习之 认清变量的作用范围
php 静态变量与自定义常量的使用方法
认识并使用PHP超级全局变量
通过具体程序来理解PHP里面的抽象类
php读取xml实例代码

PHP实现JAVA的XStream (PHP)


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