那是因为每个子节点之间有2
TEXT_NODE(
#text)。
以下内容包括文本节点及其相应的值。
<object flag="complete" id="objId" version="1"> <TEXT_NODE /> <variable_value variable_id="varId">ValueGoesHere</variable_value> <reference item_ref="2"/> <TEXT_NODE /></object>
可以通过修改代码来验证:
documentBuilderFactory dbFactory = documentBuilderFactory.newInstance(); documentBuilder dBuilder = dbFactory.newdocumentBuilder(); document dom = dBuilder.parse(new ByteArrayInputStream(S.getBytes())); NodeList collected_objects = dom.getElementsByTagName("object"); System.out.println("Number of collected objects are " + collected_objects.getLength()); for (int i = 0; i < collected_objects.getLength(); i++) { Node aNode = collected_objects.item(i); // get children of "objects" NodeList refNodes = aNode.getChildNodes(); System.out.println("# of chidren are " + refNodes.getLength()); // for (int x = 0; x < refNodes.getLength(); x++) { Node n = refNodes.item(x); System.out.println(n.getNodeType() + " = " + n.getNodeName() + "/" + n.getNodevalue()); } // print attributes of "objects" NamedNodeMap attributes = aNode.getAttributes(); for (int a = 0; a < attributes.getLength(); a++) { Node theAttribute = attributes.item(a); System.out.println(theAttribute.getNodeName() + "=" + theAttribute.getNodevalue()); } }输出:
Number of collected objects are 2# of chidren are 53 = #text/ 1 = variable_value/null3 = #text/ 1 = reference/null3 = #text/ flag=completeid=objIdversion=1# of chidren are 33 = #text/ 1 = reference/null3 = #text/ comment=objCommentflag=completeid=objIdversion=1
其中,3 =
TEXT_NODE和1 =
ELEMENT_NODE。



