关于用dom来解析xml的奇怪问题
各位前辈我在用dom来解析xml的时候遇到一个奇怪的问题,xml如下
<?xml version="1.0" encoding="big5" ?>
<Albergo hotel_uid="1" name="test" kydate="2010/6/2" data_session="1">
<Time datetime="2010-06-04 11:45:03 " process_time="0.00620198249817" />
<Return middle_ware="" code="200" error_uid="5">成功: 資料查詢完成</Return>
<Data data_counts="4" name="floor" root="Floor" uid_root="" node="uid,a_floor,memo,delete_flag" uid_node="" type="Data">
- <Floor>
<uid>1</uid>
<a_floor>1</a_floor>
<memo />
<delete_flag>*</delete_flag>
</Floor>
- <Floor>
<uid>2</uid>
<a_floor>2</a_floor>
<memo />
<delete_flag>*</delete_flag>
</Floor>
- <Floor>
<uid>3</uid>
<a_floor>3</a_floor>
<memo />
<delete_flag>*</delete_flag>
</Floor>
- <Floor>
<uid>4</uid>
<a_floor>4</a_floor>
<memo />
<delete_flag>*</delete_flag>
</Floor>
</Data>
</Albergo>
我解析的代码如下
String result = EntityUtils.toString(rsp.getEntity());
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
InputStream is = new ByteArrayInputStream(result.getBytes("UTF-8"));
Document dom = builder.parse(is);
NodeList session_list = dom.getDocumentElement().getChildNodes();
int session_count = session_list.getLength();
String field_name = "";
String field_value = "";
for(int i = 0; i < session_count; i++)
{
Node session = session_list.item(i);
String str_session_name = session.getNodeName().toString().trim();
if(str_session_name.equals("Data"))
{
for(int j = 0; j < session.getChildNodes().getLength(); j++)
{
Node node = session.getChildNodes().item(j);
for(int k = 0; k <node.getChildNodes().getLength(); k++)
{
Node field = node.getChildNodes().item(k);
field_name = field.getNodeName();
field_value = field.getTextContent();
}
}
}
}
for(int j = 0; j < session.getChildNodes().getLength(); j++) 在做这个循环的时候 childnodes length为什么是9?