Ankündigung

Einklappen
Keine Ankündigung bisher.

XML auslesen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • XML auslesen

    Hallo Gemeinde,

    ich möchte eine XML auslesen und suche eine Funktion, die in einer bestimmten Ebene 4 grundlegende Variablen $Result, $NumberReturned, $TotalMatches, $UpdateID ausliest. Dies landet dann in einem Array, welches ich weiter verarbeite.

    Ich dachte mal ganz simpel an SimpleXML und wollte mit XPath die jeweiligen Tags <Result>, <NumberReturned>, <TotalMatches> und <UpdateID> auslesen. Mit XPath kann man, wenn die Ebene im XML bekannt ist (die ändert sich nicht !) ja eigentlich direkt auf Result etc. zugreifen. Im unten gezeigten Ansatz bekomme ich aber nur die SimpleXMLElement Object´s jeweils als Array bzw. $NumberReturned, $TotalMatches, $UpdateID bleiben ganz leer. Nebenbei wollte ich so auch die Namespaces umgehen, da diese nie konstant sind (steckt in einem UPNP-Controlpoint - siehe: http://www.ip-symcon.de/forum/thread...PS-new-version an dem ich noch einiges verbessern möchte)

    Kann mir jemand einen Tipp geben, wie ich die Inhalte der Tags als z.B. String bekomme ?

    Hier meine Test-Datei:

    PHP-Code:
    <?

    $message = '<?xml version="1.0"?>
    <s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
     <s:Body>
      <u:BrowseResponse xmlns:u="urn:schemas-upnp-org:service:ContentDirectory:1">
       <Result><DIDL-Lite xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns:pxn="urn:schemas-panasonic-com:pxn" xmlns:dvb="urn:schemas-dvb-org:metadata-1-0/" xmlns:vli="urn:schemas-panasonic-com:vli"><item id="AV-0-268435456-0-0-268436152-310261500" parentID="AV_ALL" restricted="0"><dc:title>FIFA WM 2014: Deutschland - Portugal</dc:title><upnp:writeStatus>NOT_WRITABLE</upnp:writeStatus><upnp:recordable>0</upnp:recordable><upnp:channelID type="DIGITAL">1.0</upnp:channelID><upnp:class name="videoItem">object.item.videoItem</upnp:class><res protocolInfo="http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01100000000000000000000000000000" duration="1:54:54" size="9730977792" pxn:NaviList="http://192.168.178.91:60002/AV/ROOTDB_RPL?CID=AV-0-268435456-0-0-268436152-310261500" pxn:StreamPort="60001" pxn:ChapterList="http://192.168.178.91:60002/AV/CHP_LIST?CID=AV-0-268435456-0-0-268436152-310261500" pxn:ResumePoint="0:00:00" pxn:VgaContentVideoBitrate="2626" pxn:VgaContentUri="http://192.168.178.91:60001/AV-0-268435456-0-0-268436152-310261500_BDY?CI=1&amp;fmt=AVC_TS_MP_HD_AAC_LTP_T&amp;bitrate=3000&amp;resolution=360" pxn:VgaContentProtocolInfo="http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_LTP_T;DLNA.ORG_OP=10;DLNA.ORG_CI=1;DLNA.ORG_FLAGS=81100000000000000000000000000000" vli:playitemNum="1">http://192.168.178.91:60001/AV-0-268435456-0-0-268436152-310261500_BDY</res><upnp:genre>Sports</upnp:genre><upnp:channelName>Das Erste HD</upnp:channelName><dc:date>2014-06-16T18:08:11</dc:date><upnp:channelNr>1</upnp:channelNr><dvb:objectType>DVB_TB</dvb:objectType><upnp:playbackCount>0</upnp:playbackCount><pxn:groupTopFlag>1</pxn:groupTopFlag><pxn:groupID>AV-0-268435456-0-1-150</pxn:groupID><pxn:groupMemberNum>1</pxn:groupMemberNum><pxn:groupPlaybackCount>0</pxn:groupPlaybackCount><pxn:bbr_content_id>0x100002B8</pxn:bbr_content_id><upnp:storageMedium>HDD</upnp:storageMedium></item><item id="AV-0-268435456-0-0-268436154-272840400" parentID="AV_ALL" restricted="0"><dc:title>FIFA WM 2014: Deutschland - Ghana</dc:title><upnp:writeStatus>NOT_WRITABLE</upnp:writeStatus><upnp:recordable>0</upnp:recordable><upnp:channelID type="DIGITAL">1.0</upnp:channelID><upnp:class name="videoItem">object.item.videoItem</upnp:class><res protocolInfo="http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01100000000000000000000000000000" duration="1:41:03" size="9897480192" pxn:NaviList="http://192.168.178.91:60002/AV/ROOTDB_RPL?CID=AV-0-268435456-0-0-268436154-272840400" pxn:StreamPort="60001" pxn:ChapterList="http://192.168.178.91:60002/AV/CHP_LIST?CID=AV-0-268435456-0-0-268436154-272840400" pxn:ResumePoint="0:00:00" pxn:VgaContentVideoBitrate="2626" pxn:VgaContentUri="http://192.168.178.91:60001/AV-0-268435456-0-0-268436154-272840400_BDY?CI=1&amp;fmt=AVC_TS_MP_HD_AAC_LTP_T&amp;bitrate=3000&amp;resolution=360" pxn:VgaContentProtocolInfo="http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_LTP_T;DLNA.ORG_OP=10;DLNA.ORG_CI=1;DLNA.ORG_FLAGS=81100000000000000000000000000000" vli:playitemNum="1">http://192.168.178.91:60001/AV-0-268435456-0-0-268436154-272840400_BDY</res><upnp:genre>Sports</upnp:genre><upnp:channelName>Das Erste HD</upnp:channelName><dc:date>2014-06-21T20:12:02</dc:date><upnp:channelNr>1</upnp:channelNr><dvb:objectType>DVB_TB</dvb:objectType><upnp:playbackCount>0</upnp:playbackCount><pxn:groupTopFlag>1</pxn:groupTopFlag><pxn:groupID>AV-0-268435456-0-1-152</pxn:groupID><pxn:groupMemberNum>1</pxn:groupMemberNum><pxn:groupPlaybackCount>0</pxn:groupPlaybackCount><pxn:bbr_content_id>0x100002BA</pxn:bbr_content_id><upnp:storageMedium>HDD</upnp:storageMedium></item><item id="AV-0-268435456-0-0-268436165-259394400" parentID="AV_ALL" restricted="0"><dc:title>Krauses Kur</dc:title><upnp:writeStatus>NOT_WRITABLE</upnp:writeStatus><upnp:recordable>0</upnp:recordable><upnp:channelID type="DIGITAL">15.0</upnp:channelID><upnp:class name="videoItem">object.item.videoItem</upnp:class><res protocolInfo="http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01100000000000000000000000000000" duration="1:36:04" size="6046175232" pxn:NaviList="http://192.168.178.91:60002/AV/ROOTDB_RPL?CID=AV-0-268435456-0-0-268436165-259394400" pxn:StreamPort="60001" pxn:ChapterList="http://192.168.178.91:60002/AV/CHP_LIST?CID=AV-0-268435456-0-0-268436165-259394400" pxn:ResumePoint="1:33:29" pxn:VgaContentVideoBitrate="2626" pxn:VgaContentUri="http://192.168.178.91:60001/AV-0-268435456-0-0-268436165-259394400_BDY?CI=1&amp;fmt=AVC_TS_MP_HD_AAC_LTP_T&amp;bitrate=3000&amp;resolution=360" pxn:VgaContentProtocolInfo="http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_LTP_T;DLNA.ORG_OP=10;DLNA.ORG_CI=1;DLNA.ORG_FLAGS=81100000000000000000000000000000" vli:playitemNum="1">http://192.168.178.91:60001/AV-0-268435456-0-0-268436165-259394400_BDY</res><upnp:genre>Movie/Drama</upnp:genre><upnp:channelName>MDR Sachsen</upnp:channelName><dc:date>2014-06-27T23:57:01</dc:date><upnp:channelNr>15</upnp:channelNr><dvb:objectType>DVB_TB</dvb:objectType><upnp:playbackCount>-1</upnp:playbackCount><pxn:groupTopFlag>1</pxn:groupTopFlag><pxn:groupID>AV-0-268435456-0-1-177</pxn:groupID><pxn:groupMemberNum>1</pxn:groupMemberNum><pxn:groupPlaybackCount>-1</pxn:groupPlaybackCount><pxn:bbr_content_id>0x100002C5</pxn:bbr_content_id><upnp:storageMedium>HDD</upnp:storageMedium></item><item id="AV-0-268435456-0-0-268436166-453454200" parentID="AV_ALL" restricted="0"><dc:title>Bad Boys II</dc:title><upnp:writeStatus>NOT_WRITABLE</upnp:writeStatus><upnp:recordable>0</upnp:recordable><upnp:channelID type="DIGITAL">6.0</upnp:channelID><upnp:class name="videoItem">object.item.videoItem</upnp:class><res protocolInfo="http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01100000000000000000000000000000" duration="2:47:56" size="7080996864" pxn:NaviList="http://192.168.178.91:60002/AV/ROOTDB_RPL?CID=AV-0-268435456-0-0-268436166-453454200" pxn:StreamPort="60001" pxn:ChapterList="http://192.168.178.91:60002/AV/CHP_LIST?CID=AV-0-268435456-0-0-268436166-453454200" pxn:ResumePoint="0:00:00" pxn:VgaContentVideoBitrate="2626" pxn:VgaContentUri="http://192.168.178.91:60001/AV-0-268435456-0-0-268436166-453454200_BDY?CI=1&amp;fmt=AVC_TS_MP_HD_AAC_LTP_T&amp;bitrate=3000&amp;resolution=360" pxn:VgaContentProtocolInfo="http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_LTP_T;DLNA.ORG_OP=10;DLNA.ORG_CI=1;DLNA.ORG_FLAGS=81100000000000000000000000000000" vli:playitemNum="1">http://192.168.178.91:60001/AV-0-268435456-0-0-268436166-453454200_BDY</res><upnp:genre>Unclassified</upnp:genre><upnp:channelName>ProSieben</upnp:channelName><dc:date>2014-07-13T03:06:57</dc:date><upnp:channelNr>6</upnp:channelNr><dvb:objectType>DVB_TB</dvb:objectType><upnp:playbackCount>0</upnp:playbackCount><pxn:groupTopFlag>1</pxn:groupTopFlag><pxn:groupID>AV-0-268435456-0-1-18</pxn:groupID><pxn:groupMemberNum>1</pxn:groupMemberNum><pxn:groupPlaybackCount>0</pxn:groupPlaybackCount><pxn:bbr_content_id>0x100002C6</pxn:bbr_content_id><upnp:storageMedium>HDD</upnp:storageMedium></item><item id="AV-0-268435456-0-0-268436167-290304000" parentID="AV_ALL" restricted="0"><dc:title>The Specialist</dc:title><upnp:writeStatus>NOT_WRITABLE</upnp:writeStatus><upnp:recordable>0</upnp:recordable><upnp:channelID type="DIGITAL">4.0</upnp:channelID><upnp:class name="videoItem">object.item.videoItem</upnp:class><res protocolInfo="http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01100000000000000000000000000000" duration="1:47:31" size="3602325504" pxn:NaviList="http://192.168.178.91:60002/AV/ROOTDB_RPL?CID=AV-0-268435456-0-0-268436167-290304000" pxn:StreamPort="60001" pxn:ChapterList="http://192.168.178.91:60002/AV/CHP_LIST?CID=AV-0-268435456-0-0-268436167-290304000" pxn:ResumePoint="0:00:00" pxn:VgaContentVideoBitrate="2626" pxn:VgaContentUri="http://192.168.178.91:60001/AV-0-268435456-0-0-268436167-290304000_BDY?CI=1&amp;fmt=AVC_TS_MP_HD_AAC_LTP_T&amp;bitrate=3000&amp;resolution=360" pxn:VgaContentProtocolInfo="http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_LTP_T;DLNA.ORG_OP=10;DLNA.ORG_CI=1;DLNA.ORG_FLAGS=81100000000000000000000000000000" vli:playitemNum="1">http://192.168.178.91:60001/AV-0-268435456-0-0-268436167-290304000_BDY</res><upnp:genre>Unclassified</upnp:genre><upnp:channelName>SAT.1</upnp:channelName><dc:date>2014-07-13T04:05:07</dc:date><upnp:channelNr>4</upnp:channelNr><dvb:objectType>DVB_TB</dvb:objectType><upnp:playbackCount>0</upnp:playbackCount><pxn:groupTopFlag>1</pxn:groupTopFlag><pxn:groupID>AV-0-268435456-0-1-33</pxn:groupID><pxn:groupMemberNum>1</pxn:groupMemberNum><pxn:groupPlaybackCount>0</pxn:groupPlaybackCount><pxn:bbr_content_id>0x100002C7</pxn:bbr_content_id><upnp:storageMedium>HDD</upnp:storageMedium></item><item id="AV-0-268435456-0-0-268436169-442368000" parentID="AV_ALL" restricted="0"><dc:title>Transformers - Die Rache</dc:title><upnp:writeStatus>NOT_WRITABLE</upnp:writeStatus><upnp:recordable>0</upnp:recordable><upnp:channelID type="DIGITAL">6.0</upnp:channelID><upnp:class name="videoItem">object.item.videoItem</upnp:class><res protocolInfo="http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01100000000000000000000000000000" duration="2:43:50" size="6572752896" pxn:NaviList="http://192.168.178.91:60002/AV/ROOTDB_RPL?CID=AV-0-268435456-0-0-268436169-442368000" pxn:StreamPort="60001" pxn:ChapterList="http://192.168.178.91:60002/AV/CHP_LIST?CID=AV-0-268435456-0-0-268436169-442368000" pxn:ResumePoint="0:00:00" pxn:VgaContentVideoBitrate="2626" pxn:VgaContentUri="http://192.168.178.91:60001/AV-0-268435456-0-0-268436169-442368000_BDY?CI=1&amp;fmt=AVC_TS_MP_HD_AAC_LTP_T&amp;bitrate=3000&amp;resolution=360" pxn:VgaContentProtocolInfo="http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_LTP_T;DLNA.ORG_OP=10;DLNA.ORG_CI=1;DLNA.ORG_FLAGS=81100000000000000000000000000000" vli:playitemNum="1">http://192.168.178.91:60001/AV-0-268435456-0-0-268436169-442368000_BDY</res><upnp:genre>Unclassified</upnp:genre><upnp:channelName>ProSieben</upnp:channelName><dc:date>2014-07-13T15:17:14</dc:date><upnp:channelNr>6</upnp:channelNr><dvb:objectType>DVB_TB</dvb:objectType><upnp:playbackCount>-1</upnp:playbackCount><pxn:groupTopFlag>1</pxn:groupTopFlag><pxn:groupID>AV-0-268435456-0-1-42</pxn:groupID><pxn:groupMemberNum>1</pxn:groupMemberNum><pxn:groupPlaybackCount>-1</pxn:groupPlaybackCount><pxn:bbr_content_id>0x100002C9</pxn:bbr_content_id><upnp:storageMedium>HDD</upnp:storageMedium></item><item id="AV-0-268435456-0-0-268436184-429429600" parentID="AV_ALL" restricted="0"><dc:title>Sphere - Die Macht aus dem All</dc:title><upnp:writeStatus>NOT_WRITABLE</upnp:writeStatus><upnp:recordable>0</upnp:recordable><upnp:channelID type="DIGITAL">7.0</upnp:channelID><upnp:class name="videoItem">object.item.videoItem</upnp:class><res protocolInfo="http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01100000000000000000000000000000" duration="2:39:02" size="4951179264" pxn:NaviList="http://192.168.178.91:60002/AV/ROOTDB_RPL?CID=AV-0-268435456-0-0-268436184-429429600" pxn:StreamPort="60001" pxn:ChapterList="http://192.168.178.91:60002/AV/CHP_LIST?CID=AV-0-268435456-0-0-268436184-429429600" pxn:ResumePoint="0:00:00" pxn:VgaContentVideoBitrate="2626" pxn:VgaContentUri="http://192.168.178.91:60001/AV-0-268435456-0-0-268436184-429429600_BDY?CI=1&amp;fmt=AVC_TS_MP_HD_AAC_LTP_T&amp;bitrate=3000&amp;resolution=360" pxn:VgaContentProtocolInfo="http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_LTP_T;DLNA.ORG_OP=10;DLNA.ORG_CI=1;DLNA.ORG_FLAGS=81100000000000000000000000000000" vli:playitemNum="1">http://192.168.178.91:60001/AV-0-268435456-0-0-268436184-429429600_BDY</res><upnp:genre>Movie/Drama</upnp:genre><upnp:channelName>RTL2</upnp:channelName><dc:date>2014-07-13T22:36:01</dc:date><upnp:channelNr>7</upnp:channelNr><dvb:objectType>DVB_TB</dvb:objectType><upnp:playbackCount>0</upnp:playbackCount><pxn:groupTopFlag>1</pxn:groupTopFlag><pxn:groupID>AV-0-268435456-0-1-165</pxn:groupID><pxn:groupMemberNum>1</pxn:groupMemberNum><pxn:groupPlaybackCount>0</pxn:groupPlaybackCount><pxn:bbr_content_id>0x100002D8</pxn:bbr_content_id><upnp:storageMedium>HDD</upnp:storageMedium></item><item id="AV-0-268435456-0-0-268436187-324151200" parentID="AV_ALL" restricted="0"><dc:title>Noch Tausend Worte</dc:title><upnp:writeStatus>NOT_WRITABLE</upnp:writeStatus><upnp:recordable>0</upnp:recordable><upnp:channelID type="DIGITAL">4.0</upnp:channelID><upnp:class name="videoItem">object.item.videoItem</upnp:class><res protocolInfo="http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01100000000000000000000000000000" duration="2:00:03" size="4085981184" pxn:NaviList="http://192.168.178.91:60002/AV/ROOTDB_RPL?CID=AV-0-268435456-0-0-268436187-324151200" pxn:StreamPort="60001" pxn:ChapterList="http://192.168.178.91:60002/AV/CHP_LIST?CID=AV-0-268435456-0-0-268436187-324151200" pxn:ResumePoint="0:00:00" pxn:VgaContentVideoBitrate="2626" pxn:VgaContentUri="http://192.168.178.91:60001/AV-0-268435456-0-0-268436187-324151200_BDY?CI=1&amp;fmt=AVC_TS_MP_HD_AAC_LTP_T&amp;bitrate=3000&amp;resolution=360" pxn:VgaContentProtocolInfo="http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_LTP_T;DLNA.ORG_OP=10;DLNA.ORG_CI=1;DLNA.ORG_FLAGS=81100000000000000000000000000000" vli:playitemNum="1">http://192.168.178.91:60001/AV-0-268435456-0-0-268436187-324151200_BDY</res><upnp:genre>Unclassified</upnp:genre><upnp:channelName>SAT.1</upnp:channelName><dc:date>2014-07-20T16:14:05</dc:date><upnp:channelNr>4</upnp:channelNr><dvb:objectType>DVB_TB</dvb:objectType><upnp:playbackCount>0</upnp:playbackCount><pxn:groupTopFlag>1</pxn:groupTopFlag><pxn:groupID>AV-0-268435456-0-1-64</pxn:groupID><pxn:groupMemberNum>1</pxn:groupMemberNum><pxn:groupPlaybackCount>0</pxn:groupPlaybackCount><pxn:bbr_content_id>0x100002DB</pxn:bbr_content_id><upnp:storageMedium>HDD</upnp:storageMedium></item><item id="AV-0-268435456-0-0-268436199-280951200" parentID="AV_ALL" restricted="0"><dc:title>Crank</dc:title><upnp:writeStatus>NOT_WRITABLE</upnp:writeStatus><upnp:recordable>0</upnp:recordable><upnp:channelID type="DIGITAL">7.0</upnp:channelID><upnp:class name="videoItem">object.item.videoItem</upnp:class><res protocolInfo="http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01100000000000000000000000000000" duration="1:44:03" size="3766001664" pxn:NaviList="http://192.168.178.91:60002/AV/ROOTDB_RPL?CID=AV-0-268435456-0-0-268436199-280951200" pxn:StreamPort="60001" pxn:ChapterList="http://192.168.178.91:60002/AV/CHP_LIST?CID=AV-0-268435456-0-0-268436199-280951200" pxn:ResumePoint="0:00:00" pxn:VgaContentVideoBitrate="2626" pxn:VgaContentUri="http://192.168.178.91:60001/AV-0-268435456-0-0-268436199-280951200_BDY?CI=1&amp;fmt=AVC_TS_MP_HD_AAC_LTP_T&amp;bitrate=3000&amp;resolution=360" pxn:VgaContentProtocolInfo="http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_LTP_T;DLNA.ORG_OP=10;DLNA.ORG_CI=1;DLNA.ORG_FLAGS=81100000000000000000000000000000" vli:playitemNum="1">http://192.168.178.91:60001/AV-0-268435456-0-0-268436199-280951200_BDY</res><upnp:genre>Movie/Drama</upnp:genre><upnp:channelName>RTL2</upnp:channelName><dc:date>2014-08-01T22:23:01</dc:date><upnp:channelNr>7</upnp:channelNr><dvb:objectType>DVB_TB</dvb:objectType><upnp:playbackCount>0</upnp:playbackCount><pxn:groupTopFlag>1</pxn:groupTopFlag><pxn:groupID>AV-0-268435456-0-1-154</pxn:groupID><pxn:groupMemberNum>1</pxn:groupMemberNum><pxn:groupPlaybackCount>0</pxn:groupPlaybackCount><pxn:bbr_content_id>0x100002E7</pxn:bbr_content_id><upnp:storageMedium>HDD</upnp:storageMedium></item></DIDL-Lite></Result>
       <NumberReturned>9</NumberReturned>
       <TotalMatches>129</TotalMatches>
       <UpdateID>324</UpdateID>
      </u:BrowseResponse>
     </s:Body>
    </s:Envelope>';

    print_r($message); //Kontrolle

    /*XML filtern nach <Result>, <NumberReturned>, <TotalMatches> und <UpdateID> */

    $xml = simplexml_load_string($message);

    $Result = $xml->xpath("////Result");
    print_r($Result);

    $NumberReturned = $xml->xpath("////NumberReturned");
    print_r($NumberReturned);

    $TotalMatches = $xml->xpath("////TotalMatches");
    print_r($TotalMatches);

    $UpdateID = $xml->xpath("////UpdateID");
    print_r($UpdateID);

    ?>
    Viele Grüße

    André


  • #2
    http://www.w3schools.com/xpath/xpath_examples.asp

    mir scheint dir ist der xpath noch nicht so klar. muste ja auch nen pfad (/a/b/b) angeben.
    bei dir fehlt noch der xpath aus deinem link, sowie das registern des namespace:
    http://www.ip-symcon.de/forum/thread...780#post207780

    Kommentar


    • #3
      Danke moma, Du hast mir schon einmal geholfen.

      Ich kam jedoch mit den Namespaces nicht weiter, da die in der Rückgabe unterschiedlich sind und ich so dachte die Node in denen sie stehen einfach umgehen zu können.
      Der grundlegende Aufbau ist aber immer gleich und endet in den 4 Parametern. Gibt es da keine Möglichkeit?

      Siehe dazu auch Post 27 im angesprochenen Thread.

      Gruß André

      Kommentar


      • #4
        Jage mal deinen Monsterstring durch einen XML-Formatierer. Dann wirst du staunen, was noch alles unter Result auftaucht.

        Edit: Wenn du mit Namespaces arbeiten möchtest, mußt du diese mit registerXPathNamesp für XPath bekannt machen.
        PHP-Klassen auf github

        Kommentar


        • #5
          @jspit

          ich weiß, was alles in Result steckt, aber super, dass Du ihn Dir unter die Lupe genommen hast ! Das ist eine DIDL-Lite mit diversen items von Audio, Video oder Foto, deren ID´s, Parent-ID´s, URI, AlbumArtURI etc.
          Genau da will ich ja ran, wobei dieser String (er trägt Sonderzeichen !) erst anschließend zerlegt wird

          Ich möchte wie in Post 1 beschrieben im ersten Schritt nur genau an die Ebene mit <Result>, <NumberReturned>, <TotalMatches> und <UpdateID>.

          moma hatte schon den Hinweis auf einen anderen Thread von mir ins Spiel gebracht http://www.ip-symcon.de/forum/thread...780#post207780

          Dort hantiere ich mit register Namespaces, wurde aber nicht froh, da je nach Gerät mal u:BrowseResponse oder auch m:BrowseResponse als Rückgabe (es sind Anfragen an UPNP-Server, letztlich ein Browsen) erscheint.
          Im Moment gehe ich einen komplizierteren Weg, der mir über verschiedene explodes alles Mundgerecht zurechtschneidet.

          Rein theoretisch: kann man so etwas wie Namespaces suchen und die gefundenen dann registrieren ?
          Oder gibt es vielleicht eine Möglichkeit diese zu entfernen ?

          Gruß André

          Kommentar


          • #6
            Zitat von DigiHouse Beitrag anzeigen
            Rein theoretisch: kann man so etwas wie Namespaces suchen und die gefundenen dann registrieren ?
            jop, steht auch in der docu:
            simpleXML?
            http://php.net/manual/de/simplexmlel...namespaces.php
            http://php.net/manual/de/simplexmlel...namespaces.php

            Kommentar


            • #7
              Zitat von DigiHouse Beitrag anzeigen
              Rein theoretisch: kann man so etwas wie Namespaces suchen und die gefundenen dann registrieren ?
              Oder gibt es vielleicht eine Möglichkeit diese zu entfernen ?
              Alle suchen und automatisch registrieren wird oft gezeigt, macht aber wenig Sinn. Denn die Bezeichner können sich jedoch schnell mal ändern, dann steht anstelle xx:yyy dann ein zz:yyy. Was fix bleibt ist die Url.
              Deshalb macht es Sinn, die benötigten Namespaces mit eigenen Bezeichnern zu registrieren.
              Zur zweiten Frage:
              Wenn ich die Namespaces aus der XML komplett entferne, kann ich nicht mehr zwischen aa:title und bb:title innerhalb der XML unterscheiden.
              Entferne ich nur den :, dann bin ich auch nicht flexibel. Mal ganz abgesehen davon, daß das Entfernen per RegEx nicht so gaz trivial ist, möchte man kein Inhalt verfälschen.

              Ein Zugriff auf Elemente ohne Namespace ist mit XPath ohne Probleme möglich:
              PHP-Code:
              $nodeList $xml->xpath('//UpdateID');
              $UpdateID = (string) $nodeList[0];  //324 
              XPath liefert immer eine Liste. Ist man sicher das im gesamten XML-Baum nur ein Element existiert, kann per Index 0 zugegriffen werden.

              Bei Elementen mit Namespace sollten diese mit fixen Bezeichnern registriert werden:

              PHP-Code:
              //dc:title
              $xml->registerXPathNamespace('mydc','http://purl.org/dc/elements/1.1/');

              $nodeList $xml->xpath('//mydc:title');

              foreach(
              $nodeList as $node) {
                
              $title = (string) $node;
                echo 
              $title.'<br>';

              Selbstverständlich kann anstelle mydc auch der aktuelle Bezeichner dc benutzt werden. mydc wurde hier benutzt um das Prinzip zuverdeutlichen.

              LG jspit
              PHP-Klassen auf github

              Kommentar


              • #8
                @jspit

                erst mal recht herzlichen Dank. Habe ich doch gar nicht so falsch gelegen und das [0] war der entscheidende Hinweis ! Schön, dass Du mir nicht einen Querverweis gibst zu einem Thema, dass ich gefühlt 1000x gelesen, aber nicht wirklich verstanden habe.

                So funktioniert es:

                PHP-Code:
                <?

                $message = '<?xml version="1.0" encoding="UTF-8"?>
                <s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><u:BrowseResponse xmlns:u="urn:schemas-upnp-org:service:ContentDirectory:1"><Result>&lt;DIDL-Lite xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/"&gt;&lt;container id="94467912-bd40-4d2f-ad25-7b8423f7b05a" parentID="0" restricted="1" searchable="0"&gt;&lt;dc:title&gt;Video&lt;/dc:title&gt;&lt;dc:creator&gt;Unknown&lt;/dc:creator&gt;&lt;upnp:genre&gt;Unknown&lt;/upnp:genre&gt;&lt;dc:description&gt;Video&lt;/dc:description&gt;&lt;upnp:class&gt;object.container.storageFolder&lt;/upnp:class&gt;&lt;/container&gt;&lt;container id="abe6121c-1731-4683-815c-89e1dcd2bf11" parentID="0" restricted="1" searchable="0"&gt;&lt;dc:title&gt;Music&lt;/dc:title&gt;&lt;dc:creator&gt;Unknown&lt;/dc:creator&gt;&lt;upnp:genre&gt;Unknown&lt;/upnp:genre&gt;&lt;dc:description&gt;Music&lt;/dc:description&gt;&lt;upnp:class&gt;object.container.storageFolder&lt;/upnp:class&gt;&lt;/container&gt;&lt;container id="b0184133-f840-4a4f-a583-45f99645edcd" parentID="0" restricted="1" searchable="0"&gt;&lt;dc:title&gt;Photos&lt;/dc:title&gt;&lt;dc:creator&gt;Unknown&lt;/dc:creator&gt;&lt;upnp:genre&gt;Unknown&lt;/upnp:genre&gt;&lt;dc:description&gt;Photos&lt;/dc:description&gt;&lt;upnp:class&gt;object.container.storageFolder&lt;/upnp:class&gt;&lt;/container&gt;&lt;/DIDL-Lite&gt;</Result><NumberReturned>3</NumberReturned><TotalMatches>3</TotalMatches><UpdateID>70406221</UpdateID></u:BrowseResponse></s:Body></s:Envelope>';

                print_r($message); //Kontrolle

                /*XML filtern nach <Result>, <NumberReturned>, <TotalMatches> und <UpdateID> */

                $xml = simplexml_load_string($message);

                $Result = $xml->xpath("//Result");
                $Result = (string) $Result[0];
                echo("\r\nResult:$Result");

                $NumberReturned = $xml->xpath("//NumberReturned");
                $NumberReturned = (string) $NumberReturned[0];
                echo("\r\nNumberReturned:$NumberReturned");

                $TotalMatches = $xml->xpath("//TotalMatches");
                $TotalMatches = (string) $TotalMatches[0];
                echo("\r\nTotalMatches:$TotalMatches");

                $UpdateID = $xml->xpath("//UpdateID");
                $UpdateID = (string) $UpdateID[0];
                echo("\r\nUpdateID:$UpdateID");

                ?>
                Ausgabe:

                Code:
                <?xml version="1.0" encoding="UTF-8"?>
                <s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><u:BrowseResponse xmlns:u="urn:schemas-upnp-org:service:ContentDirectory:1"><Result>&lt;DIDL-Lite xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/"&gt;&lt;container id="94467912-bd40-4d2f-ad25-7b8423f7b05a" parentID="0" restricted="1" searchable="0"&gt;&lt;dc:title&gt;Video&lt;/dc:title&gt;&lt;dc:creator&gt;Unknown&lt;/dc:creator&gt;&lt;upnp:genre&gt;Unknown&lt;/upnp:genre&gt;&lt;dc:description&gt;Video&lt;/dc:description&gt;&lt;upnp:class&gt;object.container.storageFolder&lt;/upnp:class&gt;&lt;/container&gt;&lt;container id="abe6121c-1731-4683-815c-89e1dcd2bf11" parentID="0" restricted="1" searchable="0"&gt;&lt;dc:title&gt;Music&lt;/dc:title&gt;&lt;dc:creator&gt;Unknown&lt;/dc:creator&gt;&lt;upnp:genre&gt;Unknown&lt;/upnp:genre&gt;&lt;dc:description&gt;Music&lt;/dc:description&gt;&lt;upnp:class&gt;object.container.storageFolder&lt;/upnp:class&gt;&lt;/container&gt;&lt;container id="b0184133-f840-4a4f-a583-45f99645edcd" parentID="0" restricted="1" searchable="0"&gt;&lt;dc:title&gt;Photos&lt;/dc:title&gt;&lt;dc:creator&gt;Unknown&lt;/dc:creator&gt;&lt;upnp:genre&gt;Unknown&lt;/upnp:genre&gt;&lt;dc:description&gt;Photos&lt;/dc:description&gt;&lt;upnp:class&gt;object.container.storageFolder&lt;/upnp:class&gt;&lt;/container&gt;&lt;/DIDL-Lite&gt;</Result><NumberReturned>3</NumberReturned><TotalMatches>3</TotalMatches><UpdateID>70406221</UpdateID></u:BrowseResponse></s:Body></s:Envelope>
                Result:<DIDL-Lite xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/"><container id="94467912-bd40-4d2f-ad25-7b8423f7b05a" parentID="0" restricted="1" searchable="0"><dc:title>Video</dc:title><dc:creator>Unknown</dc:creator><upnp:genre>Unknown</upnp:genre><dc:description>Video</dc:description><upnp:class>object.container.storageFolder</upnp:class></container><container id="abe6121c-1731-4683-815c-89e1dcd2bf11" parentID="0" restricted="1" searchable="0"><dc:title>Music</dc:title><dc:creator>Unknown</dc:creator><upnp:genre>Unknown</upnp:genre><dc:description>Music</dc:description><upnp:class>object.container.storageFolder</upnp:class></container><container id="b0184133-f840-4a4f-a583-45f99645edcd" parentID="0" restricted="1" searchable="0"><dc:title>Photos</dc:title><dc:creator>Unknown</dc:creator><upnp:genre>Unknown</upnp:genre><dc:description>Photos</dc:description><upnp:class>object.container.storageFolder</upnp:class></container></DIDL-Lite>
                NumberReturned:3
                TotalMatches:3
                UpdateID:70406221
                Werde mich als nächstes an das Auslesen des String unter <Result> machen. Merkwürdigerweise werden mir gleich die Sonderzeichen geparsed - aber das erspart mir einen Schritt. Mal sehen, wie ich da vorankomme, da ich ebenfalls dort über explode ging. Hier sind die Bezeichnungen wie 'dc:title' etc. relativ konstant, so dass das einfacher gehen dürfte.

                Theoretisch dürfte ich ja mit einer foreach-Schleife genauso darüber gehen können und ein Array mit den enthalten Informationen erstellen können. Ein Problem sehe ich nur in den Attributen.

                Viele Grüße

                André

                Kommentar


                • #9
                  Hallo Gemeinde,

                  nochmal ein Stolperstein, an dem ich mich schon einmal vor gut einem Jahr versuchte. Die XML weiter auszulesen funktioniert für fast alle Nodes, aber nicht für <res>. Ich hatte gehofft per xpath weiterhin ohne Namespaces heranzukommen, wie es mir jspit mit Erfolg für die Nodes davor zeigte (Danke nochmal ).

                  Leider ein Fehlschlag. Der Test:

                  PHP-Code:
                  <?

                  //http://www.xpathtester.com/colored/694add8a74431f821e0d8682cabae89b

                  $xml = '<?xml version="1.0" encoding="UTF-8"?>
                  <DIDL-Lite xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/">
                    <item id="5:audio5:part11:92:57" parentID="4:cont2:530:11:Asaf Avidan0:" refID="5:audio5:part11:91:5" restricted="0">
                      <dc:title>One Day (Wankelmut Remix)</dc:title>
                      <upnp:class>object.item.audioItem.musicTrack</upnp:class>
                      <upnp:genre>Pop</upnp:genre>
                      <upnp:actor>Asaf Avidan</upnp:actor>
                      <upnp:originalTrackNumber>1</upnp:originalTrackNumber>
                      <dc:date>2012-10-14</dc:date>
                      <dc:publisher>1LIVE</dc:publisher>
                      <dc:creator>Asaf Avidan</dc:creator>
                      <upnp:artist role="AlbumArtist">Asaf Avidan</upnp:artist>
                      <upnp:artist role="Performer">Asaf Avidan</upnp:artist>
                      <upnp:albumArtURI xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/" dlna:profileID="JPEG_TN">http://192.168.178.1:49200/EXTRACTALBUMART/mp3/DLNA-14-0/Musik/Asaf%20Avidan%20-%20One%20Day%20(Wankelmut%20Remix).jpg</upnp:albumArtURI>
                      <res protocolInfo="http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01700000000000000000000000000000" size="3114569" duration="0:00:00.000">http://192.168.178.1:49200/AUDIO/DLNA-1-0/Musik/Asaf%20Avidan%20-%20One%20Day%20(Wankelmut%20Remix).mp3</res>
                    </item>
                  </DIDL-Lite>';


                  $xml = simplexml_load_string($xml);
                  print_r($xml);

                  $title = $xml->xpath("//dc:creator");
                  $title = (string) $title[0];
                  print_r("Titel:$title\r\n");

                  $res = $xml->xpath("//res");
                  $res = (string) $res[0];
                  print_r("Quelle:$res\r\n");

                  ?>
                  Ausgabe:

                  PHP-Code:
                  SimpleXMLElement Object
                  (
                      [
                  item] => SimpleXMLElement Object
                          
                  (
                              [@
                  attributes] => Array
                                  (
                                      [
                  id] => 5:audio5:part11:92:57
                                      
                  [parentID] => 4:cont2:530:11:Asaf Avidan0:
                                      [
                  refID] => 5:audio5:part11:91:5
                                      
                  [restricted] => 0
                                  
                  )

                              [
                  res] => http://192.168.178.1:49200/AUDIO/DLNA-1-0/Musik/Asaf%20Avidan%20-%20One%20Day%20(Wankelmut%20Remix).mp3
                          
                  )

                  )
                  Titel:Asaf Avidan

                  Notice
                  :  Undefined offset0 in D:\IP-Symcon\scripts\31934.ips.php on line 32
                  Quelle

                  Erstetze ich in der XML als auch xpath allerdings <res> durch <upnp:res> (also mit Namespace) funktioniert es.

                  Wie komme ich aber ohne diesen Kniff an das einzige Element ohne Namespace heran ?

                  Viele Grüße

                  André

                  Kommentar


                  • #10
                    PHP-Code:
                    $xml simplexml_load_string($xml);

                    $xml->registerXPathNamespace ('default' 'urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/');


                    print_r($xml);

                    $title $xml->xpath("//dc:creator");
                    $title = (string) $title[0];
                    print_r("Titel:$title\r\n");

                    $res $xml->xpath("//default:res");
                    $res = (string) $res[0];
                    print_r("Quelle:$res\r\n"); 
                    --

                    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                    --

                    Kommentar


                    • #11
                      Generisch:
                      PHP-Code:
                      $xml simplexml_load_string($xml);

                      $ns $xml->getNamespaces (true);
                      $defaultNamespace $ns[''];

                      $xml->registerXPathNamespace ('default' $defaultNamespace); 
                      --

                      „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                      Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                      --

                      Kommentar


                      • #12
                        Warum per XPath auslesen, wenn es mit SimpleXML doch relativ einfach geht?

                        PHP-Code:
                        $xml '<DIDL-Lite xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/"> 
                          <item id="5:audio5:part11:92:57" parentID="4:cont2:530:11:Asaf Avidan0:" refID="5:audio5:part11:91:5" restricted="0"> 
                            <dc:title>One Day (Wankelmut Remix)</dc:title> 
                            <upnp:class>object.item.audioItem.musicTrack</upnp:class> 
                            <upnp:genre>Pop</upnp:genre> 
                            <upnp:actor>Asaf Avidan</upnp:actor> 
                            <upnp:originalTrackNumber>1</upnp:originalTrackNumber> 
                            <dc:date>2012-10-14</dc:date> 
                            <dc:publisher>1LIVE</dc:publisher> 
                            <dc:creator>Asaf Avidan</dc:creator> 
                            <upnp:artist role="AlbumArtist">Asaf Avidan</upnp:artist> 
                            <upnp:artist role="Performer">Asaf Avidan</upnp:artist> 
                            <upnp:albumArtURI xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/" dlna:profileID="JPEG_TN">http://192.168.178.1:49200/EXTRACTALBUMART/mp3/DLNA-14-0/Musik/Asaf%20Avidan%20-%20One%20Day%20(Wankelmut%20Remix).jpg</upnp:albumArtURI> 
                            <res protocolInfo="http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01700000000000000000000000000000" size="3114569" duration="0:00:00.000">http://192.168.178.1:49200/AUDIO/DLNA-1-0/Musik/Asaf%20Avidan%20-%20One%20Day%20(Wankelmut%20Remix).mp3</res> 
                          </item> 
                        </DIDL-Lite>'
                        ;

                        $didl 'urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/';
                        $dc 'http://purl.org/dc/elements/1.1/';
                        $upnp 'urn:schemas-upnp-org:metadata-1-0/upnp/';

                        $simplexml simplexml_load_string($xml);

                        foreach(
                        $simplexml->item as $item) {
                            
                        var_dump((string) $item->children($dc)->title);
                            
                        var_dump((string) $item->children($dc)->creator);
                            
                        var_dump((string) $item->children($dc)->date);
                            
                        var_dump((string) $item->children($upnp)->genre);
                            
                        var_dump((string) $item->children($upnp)->actor);
                            
                        var_dump((string) $item->children($upnp)->actor);
                            
                        var_dump((string) $item->children($didl)->res);

                        Kommentar


                        • #13
                          Z.B., weil man xpath konfigurieren kann.
                          --

                          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                          Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                          --

                          Kommentar

                          Lädt...
                          X