我正在学习使用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名称,但没有找到其他信息。
答案 0 :(得分:0)
请注意,在第19行中,您有一个复制和粘贴错误:您再次获取您开始使用的元素节点n
的子节点。而不是n.getChildNodes()
它应该是selement.getChildNodes()
。
您也可以考虑使用element.tagName
属性来测试分配的名称。请参阅下图,了解DOM2核心的摘要。