2010-06-25 8 views
1

Je souhaite convertir un fichier XML en JSON. Le problème est, j'ai la structureFreeMarker Template JSON - Donnez-lui un nœud? NextSibling pour savoir si le nœud actuel a un frère ou une sœur?

<node id="1"> 
    <title>Content ...</title> 
</node> 

<node id="2"> 
    <title>Secon ...</title> 
    <subnodes> 

     <node id="3"> 
     <title>Secon ...</title> 
     <subnodes> 

      <node id="4"> 
       <title>Secon ...</title> 
      </node> 

     </subnodes> 

    </node> 

    </subnodes> 
</node> 

Je veux au format JSON comme:

{ 
    "nodeid" : "34", 
    "text" : "First level", 
    "children" : [{ 
    "nodeid" : "1", 
    "text" : "Content ...", 
    "leaf" : true 
     ,"children" : [{ 
    "nodeid" : "2", 
    "text" : "Second", 
    "leaf" : true 
     ,"children" : [{ 
      "nodeid" : "3", 
      "text" : "Third", 
      "leaf" : true 
    }**,**] 

Mais il y a toujours une virgule "" après que les enfants Laste. Avec Freemarker, il existe un moyen de savoir si le nœud a un parent, des enfants ou autre, comme node? Parent, node? Children. Mais aucune chance de savoir, s'il y a un frère.

Comment le Freemarker sait-il si le nœud actuel a un frère ou une sœur?

Répondre

1

Il y a deux variables de boucle spéciales disponibles à l'intérieur de la boucle de la liste:

ITEM_INDEX: Ceci est une valeur numérique qui contient l'index de l'élément courant étant franchi dans la boucle.

item_has_next: Valeur booléenne indiquant si l'élément actuel est le dernier de la séquence ou non.

Exemple:

<#assign seq = ["winter", "spring", "summer", "autumn"]> 
<#list seq as x> 
    ${x_index + 1}. ${x}<#if x_has_next>,</#if> 
</#list> 

http://freemarker.sourceforge.net/docs/ref_directive_list.html