Parsing DOM解析有困难

Parsing DOM解析有困难,parsing,dom,attributes,element,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);

我正在学习使用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")) 
Node n=nlist.item(i);
//取得身份证
元素=(元素)n;
字符串id=element.getAttribute(“id”);
//创建一个学生对象
学生st=新学生(id);
//获取子节点
NodeList slist=n.getChildNodes();
对于(int j=0;j
对于格式如下的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>

乔
爱德华兹
北345
布雷亚
加利福尼亚州
99999
(714) 444-4444
CIS 100
3.
A.
CIS 111
4.
B

我的输出找到了名字和姓氏,但没有找到任何其他信息。

注意,在第19行中,出现了一个复制和粘贴错误:再次获取元素节点的子节点
n
,而不是
n.getChildNodes()
,它应该是
selement.getChildNodes()

您也可以考虑使用<代码>元素.TAGNOTE/<代码>属性来测试ALDEMT的名称。参见下面的图以概述DMO2核心。


我发现getChildren()对于element没有定义抱歉,我把DOM2内核与提供此
元素的新DOM4内核混淆了。children
属性。这些新的DOM4功能目前仅在JavaScript中可用。因此,在您的情况下,您必须使用您一直使用的方法(如
node.getChildNodes())
)。我将编辑我的答案。