Java替换XML文件

时间:2011-06-01 16:05:08

标签: java xml regex

我在Android手机上创建了自己的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>

然后我使用正则表达式将其转换为字符串以在字符串内替换,但我对正则表达式有问题。我刚刚创建的正则表达式看起来像这样

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

我需要用另一个字符串中的另一个问题标签替换特定的问题标签(位于特定ID) 正则表达式适用于ID为1的标签,但没有ID 2,因为有另外数量的标签,但有没有办法绕过使用金额?

我希望你理解我的问题

我终于找到了我的问题的解决方案,这是

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

2 个答案:

答案 0 :(得分:3)

不要使用正则表达式。请。使用XML解析器。

你知道什么是最高投票SO answer

答案 1 :(得分:0)

同时使用SAX(或StAX)解析器和编写器。

当您读取一个事件时,检测是否在未经修改的情况下将相同的事件类型写入编写器,或者在您当前所处的状态下进行某些修改 - 例如交换元素名称或属性值。这将以CPU使用为代价处理无限量的元素;一般来说它会很轻盈。