2016-04-03 2 views
1

J'ai un JournalArticle web content avec la section suivante.Analyse et mise à jour du contenu Web liferay

<root available-locales="en_GB" default-locale="en_GB"> 
    <dynamic-element name="image-id" type="text" index-type="keyword" index="0"> 
     <dynamic-content language-id="en_GB"> 
      <![CDATA[ENG_ID1]]> 
     </dynamic-content> 
    </dynamic-element> 
    <dynamic-element name="main-picture" type="document_library" index-type="keyword" index="0"> 
     <dynamic-element name="main-picture-url" index="0" type="text" index-type="keyword"> 
      <dynamic-content language-id="en_GB"> 
       <![CDATA[http://localhost:8080/documents/11111/22222/Image1/c9ff3112-22a1-4a45-a5d7-ea0b687fa34f?t=1450349423000]]> 
      </dynamic-content> 
     </dynamic-element> 
     <dynamic-content language-id="en_GB"> 
      <![CDATA[/documents/11111/22222/Image2/c9ff3113-23a1-4a35-a1d7-ea0b127fa34f?t=1450349423000]]> 
     </dynamic-content> 
    </dynamic-element> 
</root> 

je cherchais à analyser les données XML et mettre à jour l'URL à l'intérieur main-picture-url avec celui du dessous dynamique de contenu si la valeur de NotEmpty.

String HOST = "localhost"; 
String PORT = "8080"; 
Document contentDocument = SAXReaderUtil.read(content); 

List<String> elementNames = Arrays.asList("main-picture"); 
for (String elementName : elementNames) { 
    Node mainNode = contentDocument.selectSingleNode("/root/dynamic-element[@name='"+elementName+"']/dynamic-content"); 
    Node urlNode = contentDocument.selectSingleNode("/root/dynamic-element[@name='"+elementName+"']/dynamic-element/dynamic-content"); 

    Integer urlNodeIndex = contentDocument.indexOf(urlNode); 
    String mainValue = mainNode.getText(); 
    if(!mainValue.equalsIgnoreCase("")) { 
     urlNode.setText("http://"+HOST+":"+PORT+mainValue); 

     System.out.println("urlValue is ---> "+urlNode.getText()); 
    } 
} 

Comme vous pouvez le voir ci-dessus, je peux extraire la valeur et la définir sur le nœud d'URL. Mais je suis totalement confus comment mettre cet urlNode au contenu. Je n'ai trouvé aucune méthode dans SAXReaderUtil pour m'aider à mettre à jour le content.

Y at-il un moyen par lequel je peux MISE À JOUR le contenu?

Répondre

1

La réponse était simple. Je devais faire

content = contentDocument.asXML() 

pour remettre le document mis à jour en arrière en tant que contenu.