Я изучаю анализ 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>
Мой выход находит первый и последний имена, но ни одна из другой информации.
Я получаю, что GetChildren() не определен для элемента –
К сожалению, я спутал ядро DOM2 с новым ядром DOM4, который обеспечивает этот 'element.children' атрибут. Бит этих новых функций DOM4 доступен только в JavaScript в настоящее время. Итак, в вашем случае вам нужно использовать методы, которые вы использовали (например, 'node.getChildNodes()'). Я отредактирую свой ответ. –