2010-12-15 50 views
4

Possible en double:
Convert all node's attributes into child nodesConvertir des attributs à la balise en java

Je voudrais convertir xml attributs pour marquer. par exemple En utilisant XStream

<root> 
     <abc attr1="aaa" attr2="bbb"/> 
    </root> 

À

<root> 
     <abc> 
     <attr1>aaa</attr1> 
     <attr2>bbb</attr2> 
     </abc> 
    </root> 

Tous les pointeurs serait utile.

+2

XStream n'est pas l'outil pour ce travail. XStream est un framework de liaison d'objets. C'est un travail pour XSLT. – skaffman

+0

Je n'ai jamais utilisé XSLT, pouvez-vous me diriger vers un exemple de lien si vous en avez un? – Shah

+3

Google pour 'xslt" convertir les attributs en éléments "', beaucoup de coups là – skaffman

Répondre

0

Il n'est pas possible de le convertir directement tant que XStream est utilisé. Si vous voulez utiliser XStream, il est nécessaire de créer la classe correspondant à l'élément XML.

[lire]

XStream xs = new XStream(new DomDriver()); 
xs.alias("root", ParentElement.class); 
xs.useAttributeFor(ChildElement.class, "aaa"); // read as attribute 
xs.useAttributeFor(ChildElement.class, "bbb"); 

ParentElement parent = new ParentElement(); 
try { 
    FileInputStream fis = new FileInputStream("readfile"); 
    xs.fromXML(fis, parent); 
} catch (FileNotFoundException ex) { 
    ex.printStackTrace(); 
} 

[écrire]

ChildElement element = new ChildElement(); 
element.setAttr1("aaa"); 
element.setAttr2("bbb"); 

ParentElement parent = new ParentElement(); 
parent.setChildElement(element); 

XStream xs = new XStream(); 
xs.alias("root", ParentElement.class); 

try { 
    FileOutputStream fs = new FileOutputStream("writefile"); 
    xs.toXML(parent, fs); 
} catch (FileNotFoundException e1) { 
    e1.printStackTrace(); 
} 

[parentElement]

public class ParentElement { 
    private ChildElement abc; 
    public void setChildElement(ChildElement child) { 
     this.abc = child; 
    } 
} 

[ChildElement]

public class ChildElement { 
    private String attr1; 
    private String attr2; 

    public String getAttr1() { 
     return attr1; 
    } 
    public void setAttr1(String attr1) { 
     this.attr1 = attr1; 
    } 

    public String getAttr2() { 
     return attr2; 
    } 
    public void setAttr2(String attr2) { 
     this.attr2 = attr2; 
    } 
}