J'essaie de créer une interface utilisateur qui contient une grille modifiable qui contient des données du fichier XSD. J'ai généré les classes requises à partir du fichier XSD en utilisant XJC. Mais je n'arrive pas à comprendre comment charger les données dans la grille en utilisant les méthodes des classes générées par JAXB. Quelqu'un peut-il me dire comment faire cela? J'ai implémenté le code d'exemple de grille XML simple à partir du site Web Sencha (http://www.sencha.com/examples/pages/grid/xml.html) en utilisant le document XML du fichier XSD. Mais, j'ai un problème de ne pas être en mesure de charger les données de nœud enfant interne du fichier XML. Quelqu'un peut-il s'il vous plaît m'aider avec les deux problèmes ?? Je vous remercie.GXT avec les classes JAXB
Éditer: Ce qui suit est mon code pour la grille.
public class XMLToGridex extends LayoutContainer
{
//@Override
protected void onRender(Element parent, int index)
{
super.onRender(parent, index);
setLayout(new FlowLayout(10));
List<ColumnConfig> columns = new ArrayList<ColumnConfig>();
columns.add(new ColumnConfig("name", "Name", 100));
columns.add(new ColumnConfig("frameworkFrequencyMultiplier", "FrameWorkFrequencyMultiplier", 300));
columns.add(new ColumnConfig("additional", "Additional", 100));
// create the column model
ColumnModel cm = new ColumnModel(columns);
// defines the xml structure
ModelType type = new ModelType();
type.setRoot("module");
type.setRecordName("emsElement");
type.addField("name");
type.addField("frameworkFrequencyMultiplier");
// type.addField("convertItem");
// type.setRoot("convertItem");
// type.setRecordName("source");
//type.addField("additional");
//type.addField("converter");
//type.addField("converter");
//type.setRecordName(")
// type.addField("convertItem");
// use a http proxy to get the data
RequestBuilder builder = new RequestBuilder(RequestBuilder.GET,
GWT.getHostPageBaseURL() + "module.xml");
HttpProxy<String> proxy = new HttpProxy<String>(builder);
// need a loader, proxy, and reader
XmlLoadResultReader<ListLoadResult<ModelData>> reader = new XmlLoadResultReader<ListLoadResult<ModelData>>(
type);
final BaseListLoader<ListLoadResult<ModelData>> loader = new BaseListLoader<ListLoadResult<ModelData>>(
proxy, reader);
ListStore<ModelData> store = new ListStore<ModelData>(loader);
final Grid<ModelData> grid = new Grid<ModelData>(store, cm);
grid.setBorders(true);
grid.setLoadMask(true);
grid.getView().setEmptyText("Please hit the load button.");
//grid.setAutoExpandColumn("Name");
// grid.setAutoExpandColumn("");
//grid.setAutoExpandColumn("ConvertItem");
ContentPanel panel = new ContentPanel();
panel.setFrame(true);
panel.setCollapsible(true);
panel.setAnimCollapse(false);
panel.setButtonAlign(HorizontalAlignment.CENTER);
//panel.setIcon(Resources.ICONS.table());
panel.setHeading("XML Table Demo");
panel.setLayout(new FitLayout());
panel.add(grid);
panel.setSize(575, 350);
// add buttons
Button load = new Button("Load XML", new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
loader.load();
}
});
panel.addButton(load);
add(panel);
}
}
Édition2: Je poste également le document XML pour avoir une meilleure idée.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<module>
<emsElement>
<name>c1</name>
<frameworkFrequencyMultiplier>1</frameworkFrequencyMultiplier>
<convertItem>
<source user="test" url="https://192.168.103.153:8443/mi/xmlInterfaceRequest.do" passwd="837103af8990d948">
<additional>method=post</additional>
<useEncryptPasswd>true</useEncryptPasswd>
<trustStoreLocation>${NH_HOME}/custom/imframework/config/trustkeystore</trustStoreLocation>
<trustStorePassword>changeit</trustStorePassword>
</source>
<processor deltaed="true" name="camiant" additional="requestName=All">
<serverName>192.168.103.130</serverName>
</processor>
<converter name="dump">
<additional>timestamp=true</additional>
<location url="${NH_HOME}/modules/imframework/fileStagingArea/dump"/>
</converter>
<converter name="element">
<location url="${NH_HOME}/modules/imframework/fileStagingArea/elementData"/>
</converter>
</convertItem>
</emsElement>
<emsElement>
<name>n-nj</name>
<frameworkFrequencyMultiplier>1</frameworkFrequencyMultiplier>
<convertItem>
<source user="ubuntu" url="sftp://192.168.150.133/home/ubuntu/NSN/NJ" passwd="d5ee45fa2386d5f8">
<additional>strictHostKeyChecking=no</additional>
<namePatterm>**/*</namePatterm>
<recureMode>true</recureMode>
<useEncryptPasswd>true</useEncryptPasswd>
</source>
<processor deltaed="true" name="nsn">
<serverName>192.168.150.133</serverName>
<config>configA=${NH_HOME}/custom/imframework/config/NSN-SimulatorConfigA.xml</config>
</processor>
<converter name="dump">
<location url="${NH_HOME}/modules/imframework/fileStagingArea/dump"/>
</converter>
<converter name="element">
<location url="${NH_HOME}/modules/imframework/fileStagingArea/elementData"/>
</converter>
</convertItem>
</emsElement>
<emsElement>
<name>n-tx</name>
<frameworkFrequencyMultiplier>1</frameworkFrequencyMultiplier>
<convertItem>
<source user="ubuntu" url="sftp://192.168.150.133/home/ubuntu/NSN/TX" passwd="d5ee45fa2386d5f8">
<additional>strictHostKeyChecking=no</additional>
<namePatterm>**/*</namePatterm>
<recureMode>true</recureMode>
<useEncryptPasswd>true</useEncryptPasswd>
</source>
<processor deltaed="true" name="nsn">
<serverName>192.168.150.133</serverName>
<config>configA=${NH_HOME}/custom/imframework/config/NSN-SimulatorConfigA.xml</config>
</processor>
<converter name="dump">
<location url="${NH_HOME}/modules/imframework/fileStagingArea/dump"/>
</converter>
<converter name="element">
<location url="${NH_HOME}/modules/imframework/fileStagingArea/elementData"/>
</converter>
<converter name="csv">
<additional>perDayperDirectory=true,PDSN=starent</additional>
</converter>
</convertItem>
</emsElement>
<emsElement>
<name>k1</name>
<frameworkFrequencyMultiplier>1</frameworkFrequencyMultiplier>
<convertItem>
<source user="ubuntu" url="sftp://192.168.150.128/home/ubuntu/fileStagingArea" passwd="d5ee45fa2386d5f8">
<additional>strictHostKeyChecking=no</additional>
<namePatterm>**/*</namePatterm>
<recureMode>true</recureMode>
<useEncryptPasswd>true</useEncryptPasswd>
</source>
<processor deltaed="true" name="kodiak" additional="processBy=KodiakFileDate">
<serverName>192.168</serverName>
<config>${NH_HOME}/custom/imframework/config/KODIAK-SimulatorConfig.xml</config>
</processor>
<converter name="dump">
<location url="${NH_HOME}/modules/imframework/fileStagingArea/dump"/>
</converter>
<converter name="element">
<location url="${NH_HOME}/modules/imframework/fileStagingArea/elementData"/>
</converter>
</convertItem>
</emsElement>
<emsElement>
<name>a1</name>
<frameworkFrequencyMultiplier>1</frameworkFrequencyMultiplier>
<convertItem>
<source user="ubuntu" url="sftp://192.168.150.133/home/ubuntu/ALU/NJALUSample" passwd="d5ee45fa2386d5f8">
<additional>strictHostKeyChecking=no</additional>
<namePatterm>**/*</namePatterm>
<recureMode>true</recureMode>
<useEncryptPasswd>true</useEncryptPasswd>
</source>
<processor deltaed="true" name="alu">
<serverName>192.168.150.133</serverName>
<config>configA=${NH_HOME}/custom/imframework/config/ALU-SimulatorConfigA.xml,configB=${NH_HOME}/custom/imframework/config/ALU-SimulatorConfigB.xml,configC=${NH_HOME}/custom/imframework/config/ALU-SimulatorConfigC.xml</config>
</processor>
<converter name="dump">
<location url="${NH_HOME}/modules/imframework/fileStagingArea/dump"/>
</converter>
<converter name="element">
<location url="${NH_HOME}/modules/imframework/fileStagingArea/elementData"/>
</converter>
</convertItem>
</emsElement></module>
Pouvez-vous poster l'erreur que vous obtenez ainsi qu'un extrait de votre code où vous rencontrez le problème? –
Je ne reçois aucune erreur avec le code. Les données sont en cours de chargement dans la grille. Mais les données de nœud enfant interne du document XML ne sont pas en cours de chargement. –
Je suppose que je ne comprends tout simplement pas le problème. Êtes-vous incapable d'accéder aux getters dans les classes générées par JAXB, ou les données ne sont-elles pas présentes dans l'arborescence d'objets JAXB unmarshalled? –