2016-02-22 30 views
0

我有一個XML文件,該文件是這樣的:我正在尋找一種方法來使用hashmap和鍵值組合;用於rdfID映射在XML文件中

<cim:Terminal rdf:ID="6e5aba74-f8bf-4077-be5c-7058837e6990"> 
<cim:IdentifiedObject.name>T1</cim:IdentifiedObject.name> 
<cim:Terminal.ConductingEquipment rdf:resource="#_CB_LAGN_LAGN_ANLK_CB_DUMCB"/> 
<cim:Terminal.ConnectivityNode rdf:resource="#_ND_LAGN_LAGN_ANLK_34.5_1"/> 
<cim:Terminal.sequenceNumber>1</cim:Terminal.sequenceNumber> 

<cim:Breaker rdf:ID="a5f64f08-baac-457b-b11e-39ad990ececb"> 
<cim:IdentifiedObject.name>13676/DS</cim:IdentifiedObject.name> 
<cim:Switch.normalOpen>true</cim:Switch.normalOpen> 
<cim:Equipment.EquipmentContainer rdf:resource="#_KV_LAGN_LAGN_CTWD_500"/> 

我試圖使用一個散列映射,用一個新值以及字符串適合的任何「rdf:resource」來代替節點「rdf:ID」的內容。 我已經生成了以下代碼。

 try{ 
     for (Map.Entry <String, String> rdfIdLookUp : RDF_Mapping.rdfSystemMappingMemory.entrySet()){ 
      xmlResult = content.replaceAll(rdfIdLookUp.getKey().toString(),rdfIdLookUp.getValue().toString()); 
      System.out.println (rdfIdLookUp.getKey().toString()); 
      System.out.println (rdfIdLookUp.getValue().toString()); 
     } 
     FileWriter writer2 = new FileWriter(prop.getProperty("OutputDirectory")+"\\New"+filePath); 
     writer2.write(xmlResult); 
     writer2.close(); 

我還沒有能夠讓replaceAll來完成這項工作。我玩過並且尋找像「cim:Breaker」字符串之類的東西,替換工作就是這樣。 有沒有什麼特別的字符串?

+0

你是不是在循環中用每次迭代覆蓋xmlresult,因此只保存最後一次更改? –

+0

是的,謝謝......有時它只是需要另一雙眼睛看着它...... :-)添加了一行,其中內容被刷新與最新的xmlResult,現在我得到正確的東西... – JensW

+0

將創建一個答案 –

回答

0

在你的foreach循環中,每次迭代都覆蓋變量xmlcontent。

這意味着您將寫入文件只是最後一次迭代的修改,即地圖中最後一個條目的replaceAll。

相關問題