2011-06-01 43 views
0

我創建了我的Android手機,它看起來與此類似Java的替代XML的文件

<?xml version="1.0" encoding="utf-8" ?> 
<backlogs> 
    <issue id="1"> 
     <backlog id="0" name="Linux" swid="100" /> 
     <backlog id="0" name="Project Management" swid="101" /> 
    </issue> 
    <issue id="2"> 
     <backlog id="0" name="Tests" swid="110" /> 
     <backlog id="0" name="Online test" swid="111" /> 
     <backlog id="0" name="Test build" swid="112" /> 
     <backlog id="0" name="Update" swid="113" /> 
    </issue> 
</backlogs> 

以後,我把它轉換成字符串到字符串中替換使用正則表達式對我自己的XML文件,但是我有一個正則表達式的問題。
正則表達式我剛剛創建看起來像這樣

([\n\r]*)<(.*)issue(.*)1(.*)([\n\r]*)(.*)([\n\r]*)(.*)([\n\r]*)(.*)<(.*)/(.*)issue(.*) 

我需要更換的具體問題標籤(位於與特定ID)與另一個問題標籤在另一個字符串
正則表達式工作正常了ID爲1的標籤,但ID 2沒有,因爲還有其他數量的標籤,但有什麼方法可以避免使用金額?

我希望你明白我的問題

我終於找到了我的問題,這是

([\n\r]*)<(.*)issue(.*)1[\S\s]*?<(.*)/(.*)issue(.*) 
+2

第次,**不要使用正則表達式來處理非常規語言**使用**解析器**。 – 2011-06-01 16:10:31

+0

您是否想過將它解析爲XML文檔對象,然後使用正則表達式和字符串進行更改? – 2011-06-01 16:10:52

+1

嗯,也許XSLT可以幫助你? – ignis 2011-06-01 16:47:00

回答

0

在同一時間使用SAX(或StAX的)解析器和作家。

當您讀取一個事件時,檢測是否將相同的事件類型寫入作者而不進行修改,或者在您當前所處的狀態下進行一些修改 - 例如交換元素名稱或屬性值。這將以CPU使用率爲代價處理無限量的元素;一般來說它會很輕。

3

不要使用正則表達式的解決方案。請。使用XML解析器。

你知道什麼是最高的投票SO answer

+0

如何使用XML解析器來替換? – The87Boy 2011-06-01 16:11:32

+0

解析xml。在內存中改變。然後回寫,如果你想要 – 2011-06-01 16:13:07

+0

5.000對象是很多,所以我不認爲Android的內存可以處理 – The87Boy 2011-06-01 19:13:21