2013-02-01 83 views
-1

我得到了這個XML例子,我從我的網站上瀏覽時從手機中提取的,現在我需要提取參數< prf:ScreenSize> 320x240 </prf:ScreenSize>以及所有< rdf:li> from < prf:CcppAccept>參數。從php中讀取XML + RDF文件

完整文件位置:http://nds1.nds.nokia.com/uaprof/NokiaX2-01r100.xml

我到目前爲止沒有運氣可言試過,

$RDF = file_get_contents("http://nds1.nds.nokia.com/uaprof/NokiaX2-01r100.xml"); 
$RDF = str_replace('rdf:', 'rdf_', $RDF); 
$RDF = str_replace('prf:', 'prf_', $RDF); 
$RDF = str_replace('pss6:', 'pss6_', $RDF); 

$XML = simplexml_load_string($RDF);print_r($XML); 
foreach ($XML->RDF_Description as $num => $description) { 
    $attributes = $description->attributes(); 
    if (isset($attributes['prf_ScreenSize'])) { 
    echo "Screen Size = {$attributes['prf_ScreenSize']}; CcppAccept = 
{$attributes['rdf_li']}"; 
    } 
} 

RDF文件:

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:prf="http://www.openmobilealliance.org/tech/profiles/UAPROF/ccppschema-20021212#" xmlns:mms="http://www.openmobilealliance.org/tech/profiles/MMS/ccppschema_mms-v1_3#" xmlns:pss6="http://www.3gpp.org/profiles/PSS/ccppschema-PSS6#"> 
<rdf:Description rdf:ID="Profile"> 
<prf:component> 
<rdf:Description rdf:ID="HardwarePlatform"> 
<rdf:type rdf:resource="http://www.openmobilealliance.org/tech/profiles/UAPROF/ccppschema-20021212#HardwarePlatform"/> 
<prf:BluetoothProfile> 
<rdf:Bag> 
<rdf:li>Advanced Audio Distribution Profile</rdf:li> 
<rdf:li>Dial-Up Network Profile</rdf:li> 
<rdf:li>FileTransfer Profile</rdf:li> 
<rdf:li>Generic Access Profile</rdf:li> 
<rdf:li>Generic Object Exchange Profile</rdf:li> 
<rdf:li>Hands-Free Profile</rdf:li> 
<rdf:li>Headset Profile</rdf:li> 
<rdf:li>Object Push Profile</rdf:li> 
<rdf:li>Phonebook Access Profile</rdf:li> 
<rdf:li>Serial Port Profile</rdf:li> 
<rdf:li>Service Discovery Application Profile</rdf:li> 
<rdf:li>SIM Access Profile</rdf:li> 
<rdf:li>PAN NAP-Role</rdf:li> 
</rdf:Bag> 
</prf:BluetoothProfile> 
<prf:BitsPerPixel>18</prf:BitsPerPixel> 
<prf:ColorCapable>Yes</prf:ColorCapable> 
<prf:CPU>ARM</prf:CPU> 
<prf:ImageCapable>Yes</prf:ImageCapable> 
<prf:InputCharSet> 
<rdf:Bag> 
<rdf:li>ISO-8859-1</rdf:li> 
<rdf:li>ISO-10646-UCS-2</rdf:li> 
<rdf:li>US-ASCII</rdf:li> 
<rdf:li>UTF-8</rdf:li> 
</rdf:Bag> 
</prf:InputCharSet> 
<prf:Keyboard>PhoneKeyPad</prf:Keyboard> 
<prf:Model>Nokia X2-01</prf:Model> 
<prf:NumberOfSoftKeys>3</prf:NumberOfSoftKeys> 
<prf:OutputCharSet> 
<rdf:Bag> 
<rdf:li>ISO-8859-1</rdf:li> 
<rdf:li>ISO-10646-UCS-2</rdf:li> 
<rdf:li>US-ASCII</rdf:li> 
<rdf:li>UTF-8</rdf:li> 
</rdf:Bag> 
</prf:OutputCharSet> 
<prf:PixelAspectRatio>1x1</prf:PixelAspectRatio> 
<prf:ScreenSize>320x240</prf:ScreenSize> 
<prf:ScreenSizeChar>15x16</prf:ScreenSizeChar> 
<prf:StandardFontProportional>Yes</prf:StandardFontProportional> 
<prf:SoundOutputCapable>Yes</prf:SoundOutputCapable> 
<prf:TextInputCapable>Yes</prf:TextInputCapable> 
<prf:Vendor>Nokia</prf:Vendor> 
<prf:VoiceInputCapable>Yes</prf:VoiceInputCapable> 
</rdf:Description> 
</prf:component> 
<prf:component> 
<rdf:Description rdf:ID="SoftwarePlatform"> 
<rdf:type rdf:resource="http://www.openmobilealliance.org/tech/profiles/UAPROF/ccppschema-20021212#SoftwarePlatform"/> 
<prf:AcceptDownloadableSoftware>Yes</prf:AcceptDownloadableSoftware> 
<prf:AudioInputEncoder> 
<rdf:Bag> 
<rdf:li>AMR</rdf:li> 
<rdf:li>EFR</rdf:li> 
<rdf:li>FR</rdf:li> 
</rdf:Bag> 
</prf:AudioInputEncoder> 
<prf:CcppAccept> 
<rdf:Bag> 
<rdf:li>application/java</rdf:li> 
<rdf:li>application/java-archive</rdf:li> 
<rdf:li>application/m3g</rdf:li> 
<rdf:li>application/sdp</rdf:li> 
<rdf:li>application/vnd.ms-wmdrm.lic-chlg-req</rdf:li> 
<rdf:li>application/vnd.ms-wmdrm.lic-resp</rdf:li> 
<rdf:li>application/vnd.ms-wmdrm.meter-chlg-req</rdf:li> 
<rdf:li>application/vnd.ms-wmdrm.meter-resp</rdf:li> 
<rdf:li>application/vnd.nokia.flashlite-archive</rdf:li> 
<rdf:li>application/vnd.nokia.headwrap</rdf:li> 
<rdf:li>application/vnd.nokia.radio-preset</rdf:li> 
<rdf:li>application/vnd.nokia.ringing-tone</rdf:li> 
<rdf:li>application/vnd.nok-s40theme</rdf:li> 
<rdf:li>application/vnd.nokia.swupd.dp2</rdf:li> 
<rdf:li>application/vnd.oma.dd+xml</rdf:li> 
<rdf:li>application/vnd.oma.drm.content</rdf:li> 
<rdf:li>application/vnd.oma.drm.dcf</rdf:li> 
<rdf:li>application/vnd.oma.drm.message</rdf:li> 
<rdf:li>application/vnd.oma.drm.rights+wbxml</rdf:li> 
<rdf:li>application/vnd.oma.drm.rights+xml</rdf:li> 
<rdf:li>application/vnd.oma.drm.ro+xml</rdf:li> 
<rdf:li>application/vnd.oma.drm.roap-pdu+xml</rdf:li> 
<rdf:li>application/vnd.oma.drm.roap-trigger+xml</rdf:li> 
<rdf:li>application/vnd.syncml.dm+wbxml</rdf:li> 
<rdf:li>application/vnd.syncml.notification</rdf:li> 
<rdf:li>application/vnd.syncml+wbxml</rdf:li> 
<rdf:li>application/vnd.syncml+xml</rdf:li> 
<rdf:li>application/vnd.wap.cert-response</rdf:li> 
<rdf:li>application/vnd.wap.connectivity-wbxml</rdf:li> 
<rdf:li>application/vnd.wap.hashed-certificate</rdf:li> 
<rdf:li>application/vnd.wap.mms-message</rdf:li> 
<rdf:li>application/vnd.wap.sic</rdf:li> 
<rdf:li>application/vnd.wap.signed-certificate</rdf:li> 
<rdf:li>application/vnd.wap.slc</rdf:li> 
<rdf:li>application/vnd.wap.wmlc</rdf:li> 
<rdf:li>application/vnd.wap.wmlscriptc</rdf:li> 
<rdf:li>application/vnd.wap.xhtml+xml</rdf:li> 
<rdf:li>application/wml+xml</rdf:li> 
<rdf:li>application/xhtml+xml</rdf:li> 
<rdf:li>application/x-java-archive</rdf:li> 
<rdf:li>application/x-shockwave-flash</rdf:li> 
<rdf:li>application/x-wap-prov.browser-bookmarks</rdf:li> 
<rdf:li>application/x-x509-ca-cert</rdf:li> 
<rdf:li>audio/3gpp</rdf:li> 
<rdf:li>audio/3gpp2</rdf:li> 
<rdf:li>audio/aac</rdf:li> 
<rdf:li>audio/amr</rdf:li> 
<rdf:li>audio/amr-wb</rdf:li> 
<rdf:li>audio/mid</rdf:li> 
<rdf:li>audio/midi</rdf:li> 
<rdf:li>audio/mobile-xmf</rdf:li> 
<rdf:li>audio/mp3</rdf:li> 
<rdf:li>audio/mp4</rdf:li> 
<rdf:li>audio/mpeg</rdf:li> 
<rdf:li>audio/sp-midi</rdf:li> 
<rdf:li>audio/wav</rdf:li> 
<rdf:li>audio/x-amr</rdf:li> 
<rdf:li>audio/x-mid</rdf:li> 
<rdf:li>audio/x-midi</rdf:li> 
<rdf:li>audio/x-ms-wma</rdf:li> 
<rdf:li>audio/x-wav</rdf:li> 
<rdf:li>image/bmp</rdf:li> 
<rdf:li>image/gif</rdf:li> 
<rdf:li>image/jpeg</rdf:li> 
<rdf:li>image/jpg</rdf:li> 
<rdf:li>image/pjpeg</rdf:li> 
<rdf:li>image/png</rdf:li> 
<rdf:li>image/svg+xml</rdf:li> 
<rdf:li>image/vnd.nok-oplogo-color</rdf:li> 
<rdf:li>image/vnd.nok-wallpaper</rdf:li> 
<rdf:li>image/vnd.wap.wbmp</rdf:li> 
<rdf:li>multipart/mixed</rdf:li> 
<rdf:li>text/css</rdf:li> 
<rdf:li>text/ecmascript</rdf:li> 
<rdf:li>text/html</rdf:li> 
<rdf:li>text/plain</rdf:li> 
<rdf:li>text/vnd.sun.j2me.app-descriptor</rdf:li> 
<rdf:li>text/vnd.wap.co</rdf:li> 
<rdf:li>text/vnd.wap.si</rdf:li> 
<rdf:li>text/vnd.wap.sl</rdf:li> 
<rdf:li>text/vnd.wap.wml</rdf:li> 
<rdf:li>text/vnd.wap.wmlscript</rdf:li> 
<rdf:li>text/x-co-desc</rdf:li> 
<rdf:li>text/x-vCalendar</rdf:li> 
<rdf:li>text/x-vCard</rdf:li> 
<rdf:li>video/3gpp</rdf:li> 
<rdf:li>video/3gpp2</rdf:li> 
<rdf:li>video/mp4</rdf:li> 
<rdf:li>video/vnd.rn-realvideo</rdf:li> 
<rdf:li>video/x-ms-asf</rdf:li> 
<rdf:li>video/x-ms-wmv</rdf:li> 
</rdf:Bag> 
</prf:CcppAccept> 

</rdf:Description> 
</prf:component> 
</rdf:Description> 
</rdf:RDF> 

回答

0
$file = file_get_contents("http://nds1.nds.nokia.com/uaprof/NokiaX2-01r100.xml"); 

$screen_size = explode('<prf:ScreenSize>', $file); 
$screen_size = explode('</prf:ScreenSize>', $screen_size[1]); 
$screen_size = $screen_size[0]; 

$ccpp = explode('<prf:CcppAccept>', $file); 
$ccpp = explode('</prf:CcppAccept>', $ccpp[1]); 
$ccpp = str_replace( 
     array("<rdf:Bag>","</rdf:Bag>","rdf:"), 
     array("<ul>","</ul>",""), $ccpp[0]); 

echo $screen_size."<br/>".$ccpp; 

這將工作...不是很乾淨,但是做這項工作。

0

XML是大小寫敏感的,所以我認爲那$ XML-> RDF_Description可能需要是rdf_Description。如果我仍然有一臺服務器上的PHP,我會測試。