2010-12-15 44 views
4

可能重複:
Convert all node's attributes into child nodes轉換屬性在Java標籤

我想轉換XML屬性標記。例如,使用XStream的

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

TO

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

任何指針將是有益的。

+2

XStream不是此工作的工具。 XStream是一個對象綁定框架。這是XSLT的工作。 – skaffman 2010-12-15 19:28:04

+0

我從來沒有使用過XSLT,如果您有任何問題,請指點我的示例鏈接? – Shah 2010-12-15 19:36:00

+3

Google for'xslt「將屬性轉換爲元素」',其中大量命中 – skaffman 2010-12-15 20:13:11

回答

0

只要使用XStream,就不可能直接轉換它。如果您想使用XStream,則需要創建與XML元素對應的類。

[讀取]

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(); 
} 

[寫]

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; 
    } 
}