2014-02-16 4 views
0

Я изучаю анализ XML-файла с использованием DOM, однако, похоже, я застрял в том, как вводить более глубокие узлы в списке. Это код, я использую:Проблемы с DOM-анализом

Node n = nlist.item(i); 
    // get ID 
    Element element = (Element)n; 
    String id = element.getAttribute("id"); 
    // create a student object 
    Student st = new Student(id); 
    // get child nodes 
    NodeList slist = n.getChildNodes(); 
    for (int j = 0; j < slist.getLength(); j++) { 
    Node selement = slist.item(j); 
    if (selement.getNodeType() == Node.ELEMENT_NODE) { 
     String textval = selement.getTextContent(); 
     if (selement.getNodeName().equals("FirstName")) 
      st.setFirstName(textval); 
     if (selement.getNodeName().equals("LastName")) 
      st.setLastName(textval); 
     if (selement.getNodeName().equals("Address")) 
     { 
      NodeList slist2 = n.getChildNodes(); 
      for(int k = 0; k < slist2.getLength(); k++) { 
       Node selement2 = slist2.item(k); 
        if(selement2.getNodeName().equals("Street")) 

Для файла XML отформатированный как:

<Student_Data> 
<Student id="11111"> 
<FirstName>Joe</FirstName> 
<LastName>Edwards</LastName> 
<Address> 
    <Street>345 North</Street> 
    <City>Brea</City> 
    <State>CA</State> 
    <Zip>99999</Zip> 
    <Phone>(714) 444-4444</Phone> 
</Address> 
<Classes> 
    <Class crn="5555"> 
     <Name>CIS 100</Name> 
     <Units>3</Units> 
     <Grade>A</Grade> 
    </Class> 
    <Class crn="7777"> 
     <Name>CIS 111</Name> 
     <Units>4</Units> 
     <Grade>B</Grade>   
    </Class> 
</Classes> 
</Student> 

Мой выход находит первый и последний имена, но ни одна из другой информации.

ответ

0

Обратите внимание, что в строке 19 у вас есть копия ошибки &: вы снова загружаете дочерние узлы узла элемента n, с которого вы начинаете. Вместо n.getChildNodes() он должен быть selement.getChildNodes().

Вы также можете использовать атрибут element.tagName для проверки имени элемента. См. Диаграмму ниже для сводки ядра DOM2.

enter image description here

+0

Я получаю, что GetChildren() не определен для элемента –

+0

К сожалению, я спутал ядро ​​DOM2 с новым ядром DOM4, который обеспечивает этот 'element.children' атрибут. Бит этих новых функций DOM4 доступен только в JavaScript в настоящее время. Итак, в вашем случае вам нужно использовать методы, которые вы использовали (например, 'node.getChildNodes()'). Я отредактирую свой ответ. –

Смежные вопросы