遇到DOM解析问题

时间:2014-02-16 20:58:25

标签: parsing dom attributes element

我正在学习使用DOM解析XML文件但是我似乎陷入了如何进入列表中更深层节点的问题。 这是我正在使用的代码:

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>

我的输出找到了First和Last名称,但没有找到其他信息。

1 个答案:

答案 0 :(得分:0)

请注意,在第19行中,您有一个复制和粘贴错误:您再次获取您开始使用的元素节点n的子节点。而不是n.getChildNodes()它应该是selement.getChildNodes()

您也可以考虑使用element.tagName属性来测试分配的名称。请参阅下图,了解DOM2核心的摘要。

enter image description here