2014-06-27 2 views
3

У меня есть XML-файлАнализировать XML без тэгу

<Response> 
<StatusCode>0</StatusCode> 
<StatusDetail>OK</StatusDetail> 
<AccountInfo> 
    <element1>value</element1> 
    <element2>value</element2> 
    <element3>value</element2> 
    <elementN>value</elementN> 
</AccountInfo> 
</Response> 

И я хочу разобрать мои элементы в AccountInfo, но я не знаю элементы имена тегов.

Теперь Im, используя и этот код для испытаний, но в будущем я буду Получать больше elemenets в AccountInfo, и я не знаю, как много или там имена

String name=""; 
String balance=""; 
Node accountInfo = document.getElementsByTagName("AccountInfo").item(0); 

     if (accountInfo.getNodeType() == Node.ELEMENT_NODE){ 
      Element accountInfoElement = (Element) accountInfo; 
      name = accountInfoElement.getElementsByTagName("Name").item(0).getTextContent(); 
      balance = accountInfoElement.getElementsByTagName("Balance").item(0).getTextContent(); 
     } 
+0

Как вы хотите извлечь информацию значимым образом, если вы не знаете, какие метки могут быть (и что они означают)? – Thilo

+0

Вы уверены, что хотите динамически? Если у вас есть n различных переменных, проанализированных динамическим способом, их может быть сложно использовать (например, если вы используете некоторый алгоритм для вычисления некоторого значения). Значения будут (более или менее) представлены в списке. Обычный способ сделать это - иметь одну реализацию для определенного набора входных данных. Или вы просто хотите сбросить значения в базу данных? – Pphoenix

+0

[Этот ответ] (http://stackoverflow.com/a/3327264/391161) может помочь вам. – merlin2011

ответ

4

Heres 2 способа сделать это:

Node accountInfo = document.getElementsByTagName("AccountInfo").item(0); 
NodeList children = accountInfo.getChildNodes(); 

или вы можете сделать

XPath xPath = XPathFactory.newInstance().newXPath(); 
NodeList children = (NodeList) xPath.evaluate("//AccountInfo/*", document.getDocumentElement(), XPathConstants.NODESET); 

После того, как у вас есть ваши NodeList вы ча n через них.

for(int i=0;i<children.getLength();i++) { 
    if(children.item(i).getNodeType() == Node.ELEMENT_NODE) { 
     Element elem = (Element)children.item(i); 
     // If your document is namespace aware use localName 
     String localName = elem.getLocalName(); 
     // Tag name returns the localName and the namespace prefix 
     String tagName= elem.getTagName(); 
     // do stuff with the children 
    } 
} 
Смежные вопросы