<bdo id='PuL2z'></bdo><ul id='PuL2z'></ul>

    <small id='PuL2z'></small><noframes id='PuL2z'>

  1. <i id='PuL2z'><tr id='PuL2z'><dt id='PuL2z'><q id='PuL2z'><span id='PuL2z'><b id='PuL2z'><form id='PuL2z'><ins id='PuL2z'></ins><ul id='PuL2z'></ul><sub id='PuL2z'></sub></form><legend id='PuL2z'></legend><bdo id='PuL2z'><pre id='PuL2z'><center id='PuL2z'></center></pre></bdo></b><th id='PuL2z'></th></span></q></dt></tr></i><div id='PuL2z'><tfoot id='PuL2z'></tfoot><dl id='PuL2z'><fieldset id='PuL2z'></fieldset></dl></div>

  2. <legend id='PuL2z'><style id='PuL2z'><dir id='PuL2z'><q id='PuL2z'></q></dir></style></legend>
    1. <tfoot id='PuL2z'></tfoot>

      如何将此 XML 请求转换为 php 中的数组?

      时间:2023-05-22
        <legend id='OfLdg'><style id='OfLdg'><dir id='OfLdg'><q id='OfLdg'></q></dir></style></legend>

        • <bdo id='OfLdg'></bdo><ul id='OfLdg'></ul>
                <tbody id='OfLdg'></tbody>

                <tfoot id='OfLdg'></tfoot>

              1. <small id='OfLdg'></small><noframes id='OfLdg'>

                <i id='OfLdg'><tr id='OfLdg'><dt id='OfLdg'><q id='OfLdg'><span id='OfLdg'><b id='OfLdg'><form id='OfLdg'><ins id='OfLdg'></ins><ul id='OfLdg'></ul><sub id='OfLdg'></sub></form><legend id='OfLdg'></legend><bdo id='OfLdg'><pre id='OfLdg'><center id='OfLdg'></center></pre></bdo></b><th id='OfLdg'></th></span></q></dt></tr></i><div id='OfLdg'><tfoot id='OfLdg'></tfoot><dl id='OfLdg'><fieldset id='OfLdg'></fieldset></dl></div>
                本文介绍了如何将此 XML 请求转换为 php 中的数组?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                问题描述

                限时送ChatGPT账号..

                我是 SOAP 新手.我无法将此请求转换为数组.这个xml数组应该是字符串类型的.

                Xml 请求:

                <POS><来源><UniqueId Id="20000704abcde:105ABCDE"/></来源><AvailRequestSegments><AvailRequestSegment><StayDateRange End="2011-08-15" Start="2011-08-14"/><RoomStayCandidates><RoomStayCandidate Quantity="1"><GuestCounts><GuestCount AgeQualifyingCode="10" Count="1"/></GuestCounts></RoomStayCandidate></RoomStayCandidates><酒店搜索标准><标准><HotelRef Destination="东伦敦,南非" CityCode="" CountryCode="" HotelName="" MinHotelRating="1"/><SearchCurrency>EUR</SearchCurrency><AdditionalInfo Value="1"/><语言>EN</语言></标准></酒店搜索标准></AvailRequestSegment></AvailRequestSegments></OTA_HotelAvailRQ>

                xml 响应:

                <成功 ID="24064"/><属性><Property HotelCityCode="4162" HotelCode="6001287" HotelName="Amaryllis"><RelativePosition Direction="" Distance="0" DistanceUnitName=""/><客房住宿><房间住宿><费率计划><RatePlan RatePlanCode="12201993"/></RatePlans><房价><房价><费率><Rate EffectiveDate="2010-06-12" ExpireDate="2010-06-13"><Base Amount="76.00" CurrencyCode="EUR"/><RateDescription Adults="1" Availability="A" Children="0" RoomNum="1"><![CDATA[单人间]]></RateDescription></费率></费率></房价></RoomRates><膳食说明="自助餐 B'Fast (大陆)"/><EssentialInfo>这里是重要信息</EssentialInfo></RoomStay></RoomStays><促销/><附加信息><HotelStarDetail rating="2"/><酒店图片><HotelImage Type="卧室" URL="https://www.miki.co.uk/live/hotel/mikiNet/image/v1.0/FR/4162/419/lr/room.jpg"/><HotelImage Type="卧室" URL="https://www.miki.co.uk/live/hotel/mikiNet/image/v1.0/FR/4162/419/lr/room1.jpg"/></酒店图片><酒店描述><LongDescription>这家 2 星级酒店位于尼斯市中心.很近到海滩.酒店设有餐厅.</LongDescription></酒店描述></附加信息></属性></属性></OTA_HotelAvailRS>

                解决方案

                把这个用于将 xml 转换为数组的类放在一个名为xmlParser.class.php"的文件中,将下面的代码复制粘贴到其中.

                 $val){if($priority == '标签')$attributes_data[$attr] = $val;别的$result['attr'][$attr] = $val;}}if($type == "打开"){$parent[$level-1] = &$current;if(!is_array($current) 或 (!in_array($tag, array_keys($current)))){$current[$tag] = $result;如果($attributes_data)$current[$tag.'_attr'] = $attributes_data;$repeated_tag_index[$tag.'_'.$level] = 1;$current = &$current[$tag];}别的{if(isset($current[$tag][0])){$current[$tag][$repeated_tag_index[$tag.'_'.$level]] = $result;$repeated_tag_index[$tag.'_'.$level]++;}别的{$current[$tag] = array($current[$tag],$result);$repeated_tag_index[$tag.'_'.$level] = 2;if(isset($current[$tag.'_attr'])){$current[$tag]['0_attr'] = $current[$tag.'_attr'];未设置($current[$tag.'_attr']);}}$last_item_index = $repeated_tag_index[$tag.'_'.$level]-1;$current = &$current[$tag][$last_item_index];}}elseif($type == "完成"){if(!isset($current[$tag])){$current[$tag] = $result;$repeated_tag_index[$tag.'_'.$level] = 1;if($priority == 'tag' 和 $attributes_data)$current[$tag.'_attr'] = $attributes_data;}别的{if(isset($current[$tag][0]) 和 is_array($current[$tag])){$current[$tag][$repeated_tag_index[$tag.'_'.$level]] = $result;if($priority == 'tag' and $get_attributes and $attributes_data){$current[$tag][$repeated_tag_index[$tag.'_'.$level] .'_attr'] = $attributes_data;}$repeated_tag_index[$tag.'_'.$level]++;}别的{$current[$tag] = array($current[$tag],$result);$repeated_tag_index[$tag.'_'.$level] = 1;if($priority == 'tag' 和 $get_attributes){if(isset($current[$tag.'_attr'])){$current[$tag]['0_attr'] = $current[$tag.'_attr'];未设置($current[$tag.'_attr']);}如果($attributes_data){$current[$tag][$repeated_tag_index[$tag.'_'.$level] .'_attr'] = $attributes_data;}}$repeated_tag_index[$tag.'_'.$level]++;}}}elseif($type == '关闭'){$current = &$parent[$level-1];}}返回($xml_array);}/*** @todo 将数组转换为 xml* @param 混合 $array* @param 字符串 $level* @param string $KeyForBlank* @access 公开* @return 混合*/公共函数 array_to_xml($array, $level=1, $KeyForBlank = 'row'){$xml = '';如果 ($level==1){$xml .= '<?xml version="1.0" encoding="UTF-8"?>'."<音乐盒><响应>";}否则如果($级别== 11){$xml .= '<?xml version="1.0" encoding="UTF-8"?>'."
                "."";}foreach ($array as $key=>$value){$key = strtolower($key);$eleKey = $key;如果 (is_array($value)){if(sizeof($value)) {if ( preg_match('/^d+$/', $eleKey) ) $eleKey = $KeyForBlank;$xml .= str_repeat("",$level)."<$eleKey>";$level++;$xml .= $this->array_to_xml($value, $level, $KeyForBlank);$级别--;$xml .= str_repeat("",$level)."</$eleKey>";}别的{if($eleKey == '流派' || $this->ssBlankShow == true)$xml .= str_repeat("",$level)."<$eleKey></$eleKey>";别的$xml .= str_repeat("",$level)."<$eleKey/>";}}别的{如果(修剪($价值)!=''){if ( preg_match('/^d+$/', $eleKey) ) $eleKey = $KeyForBlank;if (htmlspecialchars($value)!=$value || $this->otherchar($value)){$xml .= str_repeat("",$level)."<$eleKey>$value</$eleKey>";}别的{$xml .= str_repeat("",$level)."<$eleKey>$value</$eleKey>";}}别的{if($eleKey == '流派' || $this->ssBlankShow == true)$xml .= str_repeat("",$level)."<$eleKey></$eleKey>";别的$xml .= str_repeat("",$level)."<$eleKey/>";}}}如果 ($level==1){$xml .= "</response></musicbox>";}否则如果($级别== 11){$xml .= "</xml>";}返回 $xml;}/*** @todo 删除其他字符 ('/:/')* @param 字符串 $str* @access 公开* @return 混合*/公共函数 otherchar($str){return preg_match('/:/', $str);}}

                然后创建一个名为test.php"的文件,其中包含以下代码:

                xml2array($ssString);$asArray1 = $oXmlParser->xml2array($ssString,'');$asArray2 = $oXmlParser->xml2array($ssString,1,'');echo "

                ";打印_r($asArray);出口;?>

                试试这个,如果有任何不便,请告诉我,如果我能帮到你更多.

                这是您通过更改如下参数得到的三种不同类型的数组,使用任何满足您需求的方法.

                $asArray = $oXmlParser->xml2array($ssString);$asArray1 = $oXmlParser->xml2array($ssString,'');$asArray2 = $oXmlParser->xml2array($ssString,1,'');

                I am new to SOAP. I am unable to convert this request into an array. This xml array should be in string type.

                Xml request:

                <OTA_HotelAvailRQ Version="1.0">
                   <POS>
                    <Source>
                     <UniqueId Id="20000704abcde:105ABCDE" />
                    </Source>
                   </POS>
                   <AvailRequestSegments>
                    <AvailRequestSegment>
                     <StayDateRange End="2011-08-15" Start="2011-08-14" />
                     <RoomStayCandidates>
                      <RoomStayCandidate Quantity="1">
                       <GuestCounts>
                        <GuestCount AgeQualifyingCode="10" Count="1" />
                       </GuestCounts>
                      </RoomStayCandidate>
                     </RoomStayCandidates>
                     <HotelSearchCriteria>
                      <Criterion>
                       <HotelRef Destination="East London, South Africa" CityCode="" CountryCode="" HotelName="" MinHotelRating="1"/>
                       <SearchCurrency>EUR</SearchCurrency>
                       <AdditionalInfo Value="1" />
                       <Language>EN</Language>
                      </Criterion>
                     </HotelSearchCriteria>
                    </AvailRequestSegment>
                   </AvailRequestSegments>
                  </OTA_HotelAvailRQ> 
                

                xml response:

                <OTA_HotelAvailRS Version="1.0">  
                     <Success Id="24064"/>  
                     <Properties>  
                          <Property HotelCityCode="4162" HotelCode="6001287" HotelName="Amaryllis">  
                               <RelativePosition Direction="" Distance="0" DistanceUnitName=""/>  
                               <RoomStays>  
                                    <RoomStay>  
                                         <RatePlans>  
                                              <RatePlan RatePlanCode="12201993"/>  
                                         </RatePlans>  
                                         <RoomRates>  
                                              <RoomRate>  
                                                   <Rates>  
                                                        <Rate EffectiveDate="2010-06-12" ExpireDate="2010-06-13">  
                                                             <Base Amount="76.00" CurrencyCode="EUR"/>  
                                                             <RateDescription Adults="1" Availability="A" Children="0" RoomNum="1">  
                                                                  <![CDATA[Single room]]>  
                                                             </RateDescription>  
                                                        </Rate>  
                                                   </Rates>  
                                              </RoomRate>  
                                         </RoomRates>  
                                         <Meals Description="Buffet B'Fast (continental)"/>  
                                         <EssentialInfo>Here comes essential information</EssentialInfo> 
                                    </RoomStay>                                        
                               </RoomStays>  
                               <Promotions/>  
                               <AdditionalInfo>  
                                    <HotelStarDetail rating="2"/>  
                                    <HotelImages>  
                                         <HotelImage Type="Bedroom" URL="https://www.miki.co.uk/live/hotel/mikiNet/image/v1.0/FR/4162/419/lr/room.jpg"/>  
                                         <HotelImage Type="Bedroom"                                  URL="https://www.miki.co.uk/live/hotel/mikiNet/image/v1.0/FR/4162/419/lr/room1.jpg"/>  
                                    </HotelImages>  
                                    <HotelDescription>  
                                         <LongDescription>This 2 star hotel is located in the city centre of Nice. It is close 
                                         to the Beach. The Hotel has a restaurant.</LongDescription>  
                                    </HotelDescription>  
                               </AdditionalInfo>  
                          </Property> 
                     </Properties>  
                </OTA_HotelAvailRS>
                

                解决方案

                Put this class for converting xml to array make a file named as "xmlParser.class.php" copy paste below code to it.

                <?php
                /**
                 * xmlParser
                 *
                 * @author     shashank Patel
                 */
                
                class xmlParser
                {
                    public $ssBlankShow = true;
                
                    /**
                    * @todo convert xml to array
                    * @param string $contents
                    * @param string $get_attributes
                    * @param string $priority
                    * @access public
                    * @return mixed
                    */
                    public function xml2array($contents, $get_attributes=1, $priority = 'tag')
                    {
                        if(!$contents)
                            return array();
                
                        if(!function_exists('xml_parser_create'))
                        {
                            return array();
                        }
                
                        $parser = xml_parser_create('');
                        xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, "UTF-8");
                        xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
                        xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
                        xml_parse_into_struct($parser, trim($contents), $xml_values);
                        xml_parser_free($parser);
                
                        if(!$xml_values)
                            return;
                
                        $xml_array = array();
                        $parents = array();
                        $opened_tags = array();
                        $arr = array();
                
                        $current = &$xml_array;
                
                        $repeated_tag_index = array();
                
                        foreach($xml_values as $data)
                        {
                            unset($attributes,$value);
                
                            extract($data);
                
                            $result = array();
                
                            $attributes_data = array();
                
                            if(isset($value))
                            {
                                if($priority == 'tag')
                                    $result = $value;
                                else
                                    $result['value'] = $value;
                            }
                
                            if(isset($attributes) and $get_attributes)
                            {
                                foreach($attributes as $attr => $val)
                                {
                                    if($priority == 'tag')
                                        $attributes_data[$attr] = $val;
                                    else
                                        $result['attr'][$attr] = $val;
                                }
                            }
                
                            if($type == "open")
                            {
                                $parent[$level-1] = &$current;
                                if(!is_array($current) or (!in_array($tag, array_keys($current))))
                                {
                                    $current[$tag] = $result;
                
                                    if($attributes_data)
                                        $current[$tag. '_attr'] = $attributes_data;
                
                                    $repeated_tag_index[$tag.'_'.$level] = 1;
                
                                    $current = &$current[$tag];
                
                                }
                                else
                                {
                                    if(isset($current[$tag][0]))
                                    {
                                        $current[$tag][$repeated_tag_index[$tag.'_'.$level]] = $result;
                
                                        $repeated_tag_index[$tag.'_'.$level]++;
                                    }
                                    else
                                    {
                                        $current[$tag] = array($current[$tag],$result);
                
                                        $repeated_tag_index[$tag.'_'.$level] = 2;
                
                                        if(isset($current[$tag.'_attr']))
                                        {
                                            $current[$tag]['0_attr'] = $current[$tag.'_attr'];
                
                                            unset($current[$tag.'_attr']);
                                        }
                
                                    }
                                    $last_item_index = $repeated_tag_index[$tag.'_'.$level]-1;
                                    $current = &$current[$tag][$last_item_index];
                                }
                
                            }
                            elseif($type == "complete")
                            {
                                if(!isset($current[$tag]))
                                {
                                    $current[$tag] = $result;
                                    $repeated_tag_index[$tag.'_'.$level] = 1;
                                    if($priority == 'tag' and $attributes_data)
                                        $current[$tag. '_attr'] = $attributes_data;
                
                                }
                                else
                                {
                                    if(isset($current[$tag][0]) and is_array($current[$tag]))
                                    {
                                        $current[$tag][$repeated_tag_index[$tag.'_'.$level]] = $result;
                
                                        if($priority == 'tag' and $get_attributes and $attributes_data)
                                        {
                                            $current[$tag][$repeated_tag_index[$tag.'_'.$level] . '_attr'] = $attributes_data;
                                        }
                
                                        $repeated_tag_index[$tag.'_'.$level]++;
                
                                    }
                                    else
                                    {
                
                                        $current[$tag] = array($current[$tag],$result);
                
                                        $repeated_tag_index[$tag.'_'.$level] = 1;
                
                                        if($priority == 'tag' and $get_attributes)
                                        {
                                            if(isset($current[$tag.'_attr']))
                                            {
                                                $current[$tag]['0_attr'] = $current[$tag.'_attr'];
                                                unset($current[$tag.'_attr']);
                                            }
                
                                            if($attributes_data)
                                            {
                                                $current[$tag][$repeated_tag_index[$tag.'_'.$level] . '_attr'] = $attributes_data;
                                            }
                                        }
                                        $repeated_tag_index[$tag.'_'.$level]++;
                                    }
                                }
                
                            }
                            elseif($type == 'close')
                            {
                                $current = &$parent[$level-1];
                            }
                        }
                
                        return($xml_array);
                    }
                
                    /**
                    * @todo convert array to xml
                    * @param mixed $array 
                    * @param string $level
                    * @param string $KeyForBlank 
                    * @access public    
                    * @return mixed
                    */
                    public function array_to_xml($array, $level=1, $KeyForBlank = 'row')
                    {
                        $xml = '';
                
                        if ($level==1) 
                        {
                            $xml .= '<?xml version="1.0" encoding="UTF-8"?>'.
                                "<musicbox><response>";
                        }
                        else if($level==11)
                        {
                            $xml .= '<?xml version="1.0" encoding="UTF-8"?>'."
                ".
                                "<xml>";
                        }
                        foreach ($array as $key=>$value) 
                        {
                
                            $key = strtolower($key);
                            $eleKey = $key;
                
                            if (is_array($value)) 
                            {
                                if(sizeof($value)) {
                                    if ( preg_match('/^d+$/', $eleKey) ) $eleKey = $KeyForBlank;
                                    $xml .= str_repeat("",$level)."<$eleKey>";
                                    $level++;
                                    $xml .= $this->array_to_xml($value, $level, $KeyForBlank);
                                    $level--;
                                    $xml .= str_repeat("",$level)."</$eleKey>";
                                } 
                                else 
                                {   
                                    if($eleKey == 'genre' || $this->ssBlankShow == true)
                                        $xml .= str_repeat("",$level)."<$eleKey></$eleKey>";
                                    else
                                        $xml .= str_repeat("",$level)."<$eleKey />";
                                }
                            }
                            else
                            {
                                if (trim($value)!='') 
                                {
                                    if ( preg_match('/^d+$/', $eleKey) ) $eleKey = $KeyForBlank;
                                    if (htmlspecialchars($value)!=$value || $this->otherchar($value)) 
                                    {
                                        $xml .= str_repeat("",$level).
                                                "<$eleKey>$value</$eleKey>";
                                    } 
                                    else 
                                    {
                                        $xml .= str_repeat("",$level).
                                            "<$eleKey>$value</$eleKey>";
                                    }
                                }
                                else 
                                {
                                    if($eleKey == 'genre' || $this->ssBlankShow == true)
                                        $xml .= str_repeat("",$level)."<$eleKey></$eleKey>";
                                    else
                                        $xml .= str_repeat("",$level)."<$eleKey />";
                                }
                            }
                        }
                        if ($level==1) 
                        {
                            $xml .= "</response></musicbox>";
                        }
                        else if($level==11)
                        {
                            $xml .= "</xml>";
                        }
                        return $xml;
                    }
                    /**
                    * @todo remove other char ('/:/')
                    * @param string $str 
                    * @access public    
                    * @return mixed
                    */
                
                
                    public function otherchar($str)
                    {
                        return preg_match('/:/', $str);
                    }
                
                }
                

                After that make a file named as "test.php" that contains below code:

                <?php
                
                $ssString = '<OTA_HotelAvailRQ Version="1.0"><POS><Source><UniqueId Id="20000704abcde:105ABCDE" /></Source></POS><AvailRequestSegments><AvailRequestSegment><StayDateRange End="2011-08-15" Start="2011-08-14" />
                            <RoomStayCandidates><RoomStayCandidate Quantity="1"><GuestCounts><GuestCount AgeQualifyingCode="10" Count="1" /></GuestCounts></RoomStayCandidate></RoomStayCandidates>
                            <HotelSearchCriteria><Criterion><HotelRef Destination="East London, South Africa" CityCode="" CountryCode="" HotelName="" MinHotelRating="1"/><SearchCurrency>EUR</SearchCurrency>
                            <AdditionalInfo Value="1" /><Language>EN</Language></Criterion></HotelSearchCriteria></AvailRequestSegment></AvailRequestSegments></OTA_HotelAvailRQ>';
                
                include 'xmlParser.class.php';
                
                $oXmlParser = new xmlParser();
                $asArray = $oXmlParser->xml2array($ssString);
                $asArray1 = $oXmlParser->xml2array($ssString,'');
                $asArray2 = $oXmlParser->xml2array($ssString,1,'');
                echo "<pre>";
                print_r($asArray);
                exit;
                ?>
                

                Try this if any inconvenience please inform me if i can help you more.

                Here is three different kind array you got by changing parameters like below use whatever satisfy your demand.

                $asArray = $oXmlParser->xml2array($ssString);
                
                $asArray1 = $oXmlParser->xml2array($ssString,'');
                
                $asArray2 = $oXmlParser->xml2array($ssString,1,'');
                

                这篇关于如何将此 XML 请求转换为 php 中的数组?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                上一篇:内容类型 'text/xml;charset=utf-8' 不是预期的类 下一篇:Php SoapClient stream_context 选项

                相关文章

                最新文章

                <legend id='l94xG'><style id='l94xG'><dir id='l94xG'><q id='l94xG'></q></dir></style></legend>
                  <bdo id='l94xG'></bdo><ul id='l94xG'></ul>

                <small id='l94xG'></small><noframes id='l94xG'>

                <i id='l94xG'><tr id='l94xG'><dt id='l94xG'><q id='l94xG'><span id='l94xG'><b id='l94xG'><form id='l94xG'><ins id='l94xG'></ins><ul id='l94xG'></ul><sub id='l94xG'></sub></form><legend id='l94xG'></legend><bdo id='l94xG'><pre id='l94xG'><center id='l94xG'></center></pre></bdo></b><th id='l94xG'></th></span></q></dt></tr></i><div id='l94xG'><tfoot id='l94xG'></tfoot><dl id='l94xG'><fieldset id='l94xG'></fieldset></dl></div>

                  1. <tfoot id='l94xG'></tfoot>