Parsing DOM解析有困难
我正在学习使用DOM解析XML文件,但是我似乎被困在如何在列表中输入更深层次的节点上。 这是我正在使用的代码: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);
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())
)。我将编辑我的答案。