2015-05-22 75 views
2

我用Java編寫的XML生成文本內容與DOM和我有一個這樣的結構(我把它簡化爲例子):保持子標籤,當我在Java中

<autocue> 
    <sentence> 
      <illustration>smile.jpg</illustration> 
      <text>I am a <color red="255" green="0" blue="0">sentence</color> <italic>text</italic>.</text> 
    </sentence> 
</autocue> 

我分析這種XML文件和我工作得很好,但是當我在我的文本節點上使用getTextContent(),它給了我一個這樣的字符串:

I am a sentence text. 

這似乎是合乎邏輯。然而,我需要它返回給我一個像這樣的字符串:

I am a <color red="255" green="0" blue="0">sentence</color> <italic>text</italic>. 

有沒有一種簡單的方法來獲得該結果? 在此先感謝。

回答

3

而不是使用getTextContent(),你可以使用以下命令:

對於確切的節點:

getElementsByTagName("text").item(0).getNodeValue() 

但如果你有muliple節點爲autocue,那麼你可以使用以下命令:

NodeList autocueNodes = myDoc.getElementsByTagName("autocue");//here myDoc is the reference for getting document for the parser 
    for (int i = 0; i < autocueNodes.getLength(); i++) { 
     NodeList autocueChildNodes = autocueNodes.item(i).getChildNodes(); 
     if (autocueChildNodes.item(i).getLocalName() != null 
       && autocueChildNodes.item(i).getLocalName().equals("sentence")) { 
      NodeList sentenceList = autocueChildNodes.item(i).getChildNodes(); 
      for (int j = 0; j < sentenceList.getLength(); j++) { 
       if (sentenceList.item(j).getLocalName() != null 
         && sentenceList.item(j).getLocalName() 
           .equals("text")) { 
        String text = sentenceList.item(j).getNodeValue(); 
       } 
      } 
     } 

    } 
+0

我該如何處理NodeList?如果我掃描並獲取每個節點的文本,我會得到相同的結果,不是?我應該手動添加標籤到我的字符串嗎? – LeGaulois88

+2

我只給出了確切的節點。對於多個節點,可以將循環用於節點列表。檢查編輯的答案 –