2010-05-20 5 views
1

J'essaie d'extraire n0Y7ezLlIYA8R0K54rEmHaTOraBQVSPDjQaGlQxlGso4jdVN1kRxtcfskEs= utilisant dom w3cXML Parser

<html> 
<div id='token' style='display:none;'> 
n0Y7ezLlIYA8R0K54rEmHaTOraBQVSPDjQaGlQxlGso4jdVN1kRxtcfskEs= 
</div> 
</html> 

mais il me semble être coincé

DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); 
Document doc = builder.parse(con.getInputStream()); 
NodeList list = doc.getElementsByTagName("div"); 

Quelqu'un peut-il s'il vous plaît me indiquer quelques tutoriels de base qui me aiderait à résoudre mon dilemme. Merci.

EDIT:

D'accord, je l'ai eu à travailler, mais il semble un peu maladroit

String token; 
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); 
Document doc = builder.parse(con.getInputStream()); 
Element root = doc.getDocumentElement(); 
NodeList items = root.getElementsByTagName("html"); 

for(int i = 0; i < items.getLength(); i++) { 

    Message message = new Message(); 
    Node item = items.item(i); 
    NodeList properties = item.getChildNodes(); 

    for(int j = 0; j < properties.getLength(); j++) { 
     Node property = properties.item(j); 
     String name = property.getNodeName(); 

     if(name.equalsIgnoreCase("div")) { 
      token = property.getFirstChild().getNodeValue());      
     } 

    } 

} 

est-il un moyen plus joli pour obtenir le jeton?

+2

Comment êtes-vous coincé? –

+0

Ok, je l'ai édité un peu – lemon

+0

DOM est la seule option que vous envisageriez? –

Répondre

1
VTDGen vg= new VTDGen(); 

if (vg.parseFile("input.xml",false)){ 
    VTDNav vn = vg.getNav(); 
    vn.toElement(VTDNav.FIRST_CHILD); 
    int i = vn.getText(); 
    if (i!=-1) 
    System.out.println(" text node is "+vn.toString(i)); 

} 
+0

D'accord, je vais vérifier VTD. – lemon

1

Dans mon cas, l'analyseur VTD-XML servi le meilleur bien que mes documents de CML sont pas énormes, un exemple de code utilisant VTD-XML sont donnés ci-dessous. Vous pouvez consulter les liens ci-dessous qui expliquent que l'analyseur VTD-XML est meilleur que les analyseurs SAX, DOM, etc, car ils ont également fourni des tests de performance. http://www.codeproject.com/Articles/28237/Programming-XPath-with-VTD-XML http://www.codeproject.com/Articles/24354/VTD-XML-XML-Processing-for-the-Future-Part-II

// Pour la lecture XPath valeurs

public String readXpathValue(String dir, String file, String xpath) { 
     String value = null; 
     try{ 

      VTDGen vg = new VTDGen(); 
      int i; 
      AutoPilot ap = new AutoPilot(); 
      ap.selectXPath(xpath); 
      if (vg.parseFile(dir+file, true)) 
      { 
       VTDNav vn = vg.getNav(); 
       ap.bind(vn); 
       //XPath eval returns one node at a time 
       while ((i = ap.evalXPath()) != -1) 
       { 
        value = vn.toString(i); 
       } 
       // ap.resetXPath(); 

      } 
     } 
     catch (Exception e){ 
      System.out.println("Exception Occurred in reading Xpath Value : "+e); 
     } 
     return value; 

    } 

// Pour modifier le fichier xml lors de l'exécution

public void formCreateXMLRequest(MAMData mamData,Map<String, String> strTobeModified) throws DatatypeConfigurationException, PayPalUserCreationFailedException, ModifyException, TranscodeException, IOException, XPathEvalException, NavException, XPathParseException 
    { 
VTDGen vg = new VTDGen(); 
     if (!vg.parseFile(mamData.getDirectory() + mamData.getBatchRequest(), true)) 
      return; 
     VTDNav vn = vg.getNav(); 
     XMLModifier xm = new XMLModifier(vn); 
     AutoPilot ap = new AutoPilot(vn); 

     Set<String> xpathkeys= strTobeModified.keySet(); 
     for(String xpath : xpathkeys) { 


     ap.selectXPath(xpath); 
     while((ap.evalXPath()) != -1) 
      { 
       int p = vn.getText(); 
       xm.updateToken(p, strTobeModified.get(xpath)); 
      } 

      xm.output(mamData.getDirectory()+mamData.getBatchRequest()); 
     } 
    } 
+0

Je ne vois aucune réponse à la question ici. –

+0

Puis-je savoir comment vous ne voyez pas cela comme une réponse, la question était d'obtenir la valeur xpath de données, et c'est ce que fera exactement mon exemple de code. – akshaymani

+0

Vous avez simplement jeté du code. Vous n'avez pas * répondu à la question *. Le code devrait être pour une démonstration/exemple. Ce n'est pas la réponse elle-même. Cela pourrait faire partie d'une réponse. –