2016-08-08 2 views
0

ich die CDATA „Testlabel“ aus dem Eingangsknoten in einer Struktur, die dies lesen möge:Zugriff auf Meta-Daten von liferay Struktur und Vorlage mit der Geschwindigkeit

<dynamic-element fieldNamespace="ddm" indexType="keyword" localizable="true" name="Label_Tag" readOnly="false" repeatable="false" required="false" showLabel="true" type="ddm-separator" width=""> 
    <meta-data locale="nl_NL"> 
     <entry name="label"> 
      <![CDATA[Testlabel]]> 
     </entry> 
     <entry name="predefinedValue"> 
      <![CDATA[]]> 
     </entry> 
     <entry name="tip"> 
      <![CDATA[]]> 
     </entry> 
     <entry name="style"> 
      <![CDATA[]]> 
     </entry> 
    </meta-data> 
</dynamic-element> 

In der Anwendungsanzeige Vorlage für eine AssetPublisher, Früher habe ich:

#foreach ($entry in $entries) 
    #set ($renderer = $entry.getAssetRenderer()) 
    #set ($className = $renderer.getClassName()) 

    #if ($className == "com.liferay.portlet.journal.model.JournalArticle") 

     ## read article properties 
     #set ($article = $renderer.getArticle()) 

     ## read webcontent as xml 
     #set ($document = $saxReaderUtil.read($article.getContent())) 
     #set ($rootElement = $document.getRootElement()) 

     ## read general elements from webcontent 
     #set ($xPathSelector = $saxReaderUtil.createXPath("dynamic-element[@name='Label_Tag']/meta-data/entry[@name='label']")) 
     #set ($strLabel = $xPathSelector.selectSingleNode($rootElement).getText()) 

$ xPathSelector $xPathSelector<br> 
$ strLabel $strLabel <br> 

    #end 
#end 

, die nicht funktioniert, er druckt:

$ xPathSelector [XPath: dynamic-element[@name='Label']/meta-data/entry[@name='label']] 
$ strLabel $strLabel 

$ strLabel ist nicht gefüllt. Was ist falsch?

+0

$ Label-vs $ label? –

+0

@Olaf Kock, $ Label zu $ ​​Label_Tag und $ label zu $ ​​strLabel geändert, aber das hat nicht geholfen. –

Antwort

0

Sie sind XPath Ausdruck ist korrekt; wenn es um Ihre Probe mit xmllint Anwendung ich folgendes Ergebnis:

> xmllint -xpath "dynamic-element[@name='Label_Tag']/meta-data/entry[@name='label']" ~/test.xml 
<entry name="label"> 
    <![CDATA[Testlabel]]> 
</entry> 

Hinzufügen text() zu Ihrer XPath-Abfrage Vielleicht helfen können:

> xmllint -xpath "dynamic-element[@name='Label_Tag']/meta-data/entry[@name='label']/text()" ~/test.xml 
<![CDATA[Testlabel]]> 
+0

bemerkte, aktualisiert die Frage –

Verwandte Themen