說我有看起來像遵循多個文件從一個子更換線在Java中,和我通過將其存儲在一個名爲「文本」變量循環:使用正則表達式
<Property name="FirstProp"><![CDATA[ ]]></PackageProperty>
<Property name="SecondProp"><![CDATA[ ]]></PackageProperty>
<Property name="ThirdProp"><![CDATA[ ]]></PackageProperty>
一些文件可以在其中包含CDATA,因此每個文件的唯一共同之處就是屬性名稱。我已經將PropertyNames存儲在名爲propNames []的字符串數組中。所以,「SecondProp」將是propNames [1]。
我現在想要替換第二行以包含一些CDATA,我試過這個,但它不起作用,因爲我只希望它在當前行之前和之後,而不是整個文件。
String CDATAReplacement = "<Property name=\"SecondProp\"><![CDATA[ Some Value ]]></PackageProperty>";
text.replaceAll("(.*)"+propNames[1]+"(.*)", CDATAReplacement)
最終結果:
<Property name="FirstProp"><![CDATA[ ]]></PackageProperty>
<Property name="SecondProp"><![CDATA[ Some Value ]]></PackageProperty>
<Property name="ThirdProp"><![CDATA[ ]]></PackageProperty>
我能做到這一點很容易使用SED和Java程序中執行腳本,但我知道這是不好的做法,讓一個Java解決方案會更好。
鑑於它正在操縱XML,您是否嘗試過使用XML庫?我不是Java本地人,所以不能幫助你,但是在.Net中這個任務我會考慮使用XML類來讀取和更新這些數據 – 2014-11-24 16:30:57
我不確定我理解你是指當前行不是整個文件?如果文件存儲在文本中,則replaceAll將查看整個文件。 – brso05 2014-11-24 16:39:17