[英]XML Node and Child Nodes
header = new LinkedHashMap<String,Object>();
Element headerElement = (Element)doc.getElementsByTagName( "Header").item(0);
NodeList elementList = headerElement.getElementsByTagName( "*" );
for( int index =0; index < elementList.getLength(); index++ ){
Node element = elementList.item(index);
System.out.println( element.getChildNodes().item(0).getTextContent() ); // Statement A
System.out.println( element.getTextContent()); // Statement B
語句A和語句B都打印相同的輸出。
這是什么意思,每個節點本身就是一個子節點??
輸入的XML是
<Header>
<tag1>1</tag1>
<tag2>2</tag2>
<tag3>3</tag3>
<tag4>4</tag4>
</Header>
從Node.getTextContent()
的文檔中 ,了解ELEMENT_NODE
的節點類型:
每個子節點(不包括COMMENT_NODE和PROCESSING_INSTRUCTION_NODE節點)的textContent屬性值的串聯。 如果節點沒有子節點,則為空字符串。
而對於文本節點,該方法的返回值僅是nodeValue
,即節點的文本。
所以是的-在具有單個子節點(即文本節點)的元素上調用此方法, 將獲得與直接在該文本節點上調用它相同的結果。 但是在其他情況下,您會得到不同的結果。 例如,如果您具有這樣的元素:
<tag>1<break />2</tag>
將會有兩個子文本節點和一個子元素節點,結果將為“ 1 2”(或可能為“ 12”;我不確定副手的級聯間隔如何工作,但您可以檢查)。
這與“包含自身”的節點無關,而僅與此方法的定義有關。
getTextContent()
返回返回此節點及其后代的文本內容。
在tag1
執行的語句A返回下面的文本節點( 1
)
在同一位置執行的語句B獲取tag1
的子節點(具有一個文本節點的列表),選擇第一個(唯一的)文本節點並顯示其文本值。
在這種情況下,它們是同一件事。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.