Seite 1 von 1

XML ignoriert Inhalte von Tags mit CDATA

Verfasst: 14.05.2013 19:14
von Delle
Hallo,

es sieht so aus als ob man die XML-Funktionen von PB nicht für Feeds benutzen kann, da alle Inhalte mit CDATA einfach rausgefiltert werden.

Beispiel-Tag aus einem Feed:

Code: Alles auswählen

<content:encoded><![CDATA[<table><tr><td>irgendwas</td></tr></table>]]></content:encoded>
Die Ausgabe des Taginhalts ist jedes Mal leer.

Code: Alles auswählen

EnableExplicit

InitNetwork()

Define XML
Define ItemNode, ItemCounter

If ReceiveHTTPFile("http://basicthinking.feedsportal.com/c/33774/f/604801/index.rss", GetCurrentDirectory() + "index.rss")
  
  
  XML = LoadXML(#PB_Any, GetCurrentDirectory() + "index.rss")
 
  If XML
   
    ItemCounter = 1
   
    Repeat
     
      ItemNode = XMLNodeFromPath(RootXMLNode(XML), "rss/channel/item[" + Str(ItemCounter) + "]")
     
      If ItemNode = 0
        Break
      EndIf
     
      ItemCounter  + 1
     
      Debug "Titel:"
      Debug GetXMLNodeText(XMLNodeFromPath(ItemNode, "title"))
      Debug "Beschreibung:"
      Debug GetXMLNodeText(XMLNodeFromPath(ItemNode, "content:encoded"))
      Debug "-------------"
     
    ForEver
   
    FreeXML(XML)
   
  EndIf
 
  DeleteFile(GetCurrentDirectory() + "index.rss")
  
EndIf
Ist das normal und ev. sogar "Standard"? http://www.w3schools.com/xml/xml_cdata.asp

Danke,
Delle

Re: XML ignoriert Inhalte von Tags mit CDATA

Verfasst: 14.05.2013 19:50
von Kiffi
CDATA ist nur ein spezieller ein Unterknoten eines Nodes.

Für die schnelle Lösung Deines Problems:

Code: Alles auswählen

[...]
Debug "Beschreibung:"
Debug GetXMLNodeText(ChildXMLNode(XMLNodeFromPath(ItemNode, "content:encoded")))
[...]
Grüße ... Kiffi

Re: XML ignoriert Inhalte von Tags mit CDATA

Verfasst: 14.05.2013 21:17
von Delle
Klasse, danke Kiffi! ;)

Wäre niemals darauf gekommen, dass [...] ein Unterknoten sein könnte.

Bin immer davon ausgegangen, dass XML nur die klassischen Tags < > verarbeitet.