XML Parser - PullRequest
       0

XML Parser

1 голос
/ 20 мая 2010

Я пытаюсь извлечь n0Y7ezLlIYA8R0K54rEmHaTOraBQVSPDjQaGlQxlGso4jdVN1kRxtcfskEs= используя w3c dom

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

но я, кажется, застрял

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

Может кто-нибудь указать мне некоторые основные учебники, которые помогут мне решить мою дилемму. Спасибо.

EDIT:

Хорошо, я заставил это работать, но это кажется немного неуклюжим

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

    }

}

Есть ли более симпатичный способ получить токен?

Ответы [ 2 ]

1 голос
/ 03 декабря 2013

В моем случае синтаксический анализатор VTD-XML работал лучше, хотя мои документы cml не такие большие, некоторые примеры кода с использованием VTD-XML приведены ниже. Вы можете сослаться на ссылки ниже, которые объясняют, что анализатор VTD-XML лучше, чем анализаторы SAX, DOM и т. Д., Поскольку они также дают показатели производительности. 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

// Для чтения значений xpath

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; 

    }

// Для изменения XML-файла во время выполнения

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());
         }
    }
1 голос
/ 20 мая 2010
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));

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...