Come get i valori di attributo dal path di selezione o select l'attributo ximpleware

<ConfiguredItems> <OtapiConfiguredItem> <Id>3117283038955</Id> <Quantity>1693</Quantity> <Configurators> <ValuedConfigurator Pid="1627207" Vid="3232480" /> <ValuedConfigurator Pid="20509" Vid="28314" /> </Configurators> </OtapiConfiguredItem> <OtapiConfiguredItem> <Id>3117283038956</Id> <Quantity>1798</Quantity> <Configurators> <ValuedConfigurator Pid="1627207" Vid="3232480" /> <ValuedConfigurator Pid="20509" Vid="6145171" /> </Configurators> </OtapiConfiguredItem> <OtapiConfiguredItem> <Id>3117283038957</Id> <Quantity>1815</Quantity> <Configurators> <ValuedConfigurator Pid="1627207" Vid="28331" /> <ValuedConfigurator Pid="20509" Vid="28315" /> </Configurators> </OtapiConfiguredItem> 

Il precedente è il mio XML .. Devo get ValuedConfigurator PID e valori VID attributo per each OtapiConfiguredItem

Ho provato la selezione del path vcPId.selectXPath ("BatchItemFullInfoAnswer / Result / Item / ConfiguredItems / OtapiConfiguredItem / Configurators / ValuedConfigurator [@pid]");

  • Pulsante di azione galleggiante
  • Applicazione Android per l'aggiornamento di una scheda madre esterna
  • Imansible importre com.google.api.client.json.jackson.JacksonFactory
  • Programmaticamente cambiare la width del button in android
  • Pulsante azione notifica non cliccabile nella schermata di block
  • Come sovrapporre il bitmap su un'altra bitmap in una posizione XY particolare
  • Grazie in anticipo..

  • Invio di file tramite Bluetooth utilizzando l'azione Intent SEND non funziona in android 4.2.2?
  • Ho perso il mio file .keystore?
  • Come triggersre / distriggersre la modalità aereo, anche sulle nuove versioni di Android (e anche con la radice)?
  • Layout personalizzato di Google Glass Immersion senza CardBuilder.Layout.EMBED_INSIDE
  • Le notifiche push di Parse.com non funzionano in modo coerente nell'errore di "GCM -MISMATCH SENDER ID"
  • Scorribile TextView in Widget Android
  • 2 Solutions collect form web for “Come get i valori di attributo dal path di selezione o select l'attributo ximpleware”

    Ci sono molti modi per farlo in vtd-xml .. Ti do alcune opzioni

    Il primo non utilizza XPath per raggiungere l'attributo, ma chiama il getAttrVal di api del cursore per farlo …

     import com.ximpleware.*; public class queryAttr { public static void main(String[] s) throws VTDException{ VTDGen vg = new VTDGen(); vg.selectLcDepth(5);// improve XPath performance for deep document if (!vg.parseFile("input.xml", false)) return; VTDNav vn = vg.getNav(); AutoPilot ap = new AutoPilot(vn); ap.selectXPath("/BatchItemFullInfoAnswer/Result/Item/ConfiguredItems/OtapiConfiguredItem/Configurators/ValuedConfigurator"); int i=0,j=0; while((i=ap.evalXPath())!=-1){ j= vn.getAttrVal("pid"); if (j!=-1) System.out.println(" attr value for pid is ==>"+vn.toString(j)); j= vn.getAttrVal("vid"); if (j!=-1) System.out.println(" attr value for vid is ==>"+vn.toString(j)); } } } 

    Secondo utilizza XPath completo, leggere i commenti incorporati nel codice

     import com.ximpleware.*; public class queryAttr { public static void main(String[] s) throws VTDException{ VTDGen vg = new VTDGen(); vg.selectLcDepth(5);// improve XPath performance for deep document if (!vg.parseFile("input.xml", false)) return; VTDNav vn = vg.getNav(); AutoPilot ap = new AutoPilot(vn); ap.selectXPath("/BatchItemFullInfoAnswer/Result/Item/ConfiguredItems/OtapiConfiguredItem/Configurators/ValuedConfigurator/@pid"); AutoPilot ap2 = new AutoPilot(vn); ap2.selectXPath("../@vid"); int i=0,j=0; while((i=ap.evalXPath())!=-1){ System.out.println(" attr value for pid is ==>"+vn.toString(i+1)); // notice this is i+1, not i cuz i is the vtd record index for pid vn.push();// maintain consistency of autoPilot with push/pop combo if ((j=ap2.evalXPath())!=-1) System.out.println(" attr value for vid is ==>"+vn.toString(j+1)); // notice this is j+1, not j cuz j is the vtd record index for vid vn.pop(); } } } 

    Grazie dell'autore di vtd, ti salva la mia giornata e la mia testa.

    Risposta: aggiunta di ConfiguredItems / OtapiConfiguredItem

     while ((ii = itemQuantities.evalXPath()) != -1) { productDetails.itemQuantitiesArrayList.add(itemQuantitiess); } 

    // aggiunta di valuedConfigurators a OtaylConfiguredItem arrayslist

     AutoPilot valuedConfigurators = new AutoPilot(); valuedConfigurators.selectXPath("/BatchItemFullInfoAnswer/Result/Item/ConfiguredItems/OtapiConfiguredItem/Configurators/ValuedConfigurator"); valuedConfigurators.bind(nav); int b = 0; String color = "";// items names ProductDetails.ItemQuantities configuredItem = null; int pos = 0;// index for arrayslist int valueIndex = 0;//0-color, 1->size while ((valuedConfigurators.evalXPath()) != -1) { { if (valueIndex == 0) { StringBuilder builder = new StringBuilder(); //color configuredItem = productDetails.itemQuantitiesArrayList.get(pos); pos += 1; b = nav.getAttrVal("Pid"); if (b != -1) { builder.append(nav.toString(b)); } // Log.e("Configure pid----->: ", nav.toString(b)); // System.out.println(" attr value for pid is ==>" + nav.toString(b)); b = nav.getAttrVal("Vid"); if (b != -1) if (b != -1) { builder.append(","); builder.append(nav.toString(b)); } color = builder.toString(); valueIndex++; /* Log.e("Configure vid----->: ", nav.toString(b)); System.out.println(" attr value for vid is ==>" + nav.toString(b));*/ } else { StringBuilder builder = new StringBuilder(); //size b = nav.getAttrVal("Pid"); if (b != -1) { builder.append(nav.toString(b)); } // System.out.println(" attr value for pid is ==>" + nav.toString(b)); b = nav.getAttrVal("Vid"); if (b != -1) { builder.append(","); builder.append(nav.toString(b)); } // System.out.println(" attr value for vid is ==>" + nav.toString(b)); configuredItem.color = color; configuredItem.size = builder.toString(); ; valueIndex = 0; Log.e("Configure:", "id:" + configuredItem.iqId + ",color:" + configuredItem.color + ",size:" + configuredItem.size); } 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.