【问题标题】:String.replace(regex, string) to replace content from XML [duplicate]String.replace(regex, string) 替换 XML 中的内容 [重复]
【发布时间】:2017-08-22 14:18:29
【问题描述】:

我有一个字符串形式的 XML。

<Message>   
 <Header>
    <MsgId></MsgId>
    <ClientAppSeq>CNB110833</ClientAppSeq>
    <ClientAppGrpSeq>CNB</ClientAppGrpSeq>
    <Status>
        <System>1111111111</System>
        <StatusCode>2222222222</StatusCode>
        <Severity>3333333333</Severity>
        <StatusDesc>4444444444</StatusDesc>
    </Status>
</Header>
<TrxSvcRq>
    <Tx123Rq>
        <ContentHeader>
            <Filler1></Filler1>
            <MessageType></MessageType>
            <MessageLength></MessageLength>
            <CycleNumber>170523</CycleNumber>
            <MessageNumber>200257</MessageNumber>
        </ContentHeader>
        <TitleHeader>
             <MessageNumber>abcdefg</Message>
             <Title>HIHIHIHI</Title>
        </TitleHeader>
    </Tx123Rq>
 </TrxSvcRq>
</Message>

我想只换下20057

<ContentHeader></ContentHeader>

我该怎么做?

有人可以帮帮我吗?

谢谢

【问题讨论】:

  • str.replace("&lt;MessageNumber&gt;200257&lt;/MessageNumber&gt;", "&lt;MessageNumber&gt;123456&lt;/MessageNumber&gt;").
  • 注意:String.replace 的第一个参数不是正则表达式(如标题所示):它是文字字符串。如果你想要正则表达式(这里实际上不需要),请使用String.replaceAll
  • 谢谢你的回复..但实际上我们不知道xml字符串是什么...... 200257可能是..568746 ....我该怎么做?
  • @bill 请看我的回答
  • 这里提供的所有答案都非常脆弱。 改用真正的 XML 解析器。可以找到许多使用真实 XML 解析器以正确方式执行此操作的示例,包括重复链接中显示的代码。

标签: java xml string


【解决方案1】:

这应该可行:

str = str.replace("<MessageNumber>200257</MessageNumber>", "<MessageNumber>123456</MessageNumber>")

【讨论】:

    【解决方案2】:

    你只需要对字符串进行简单的替换:

    String xml = "<Message>...</Message>"
    xml = xml.replace("Number>200257</Message", "Number>123456</Message")
    

    你不需要把整个应答器放进去

    【讨论】:

      【解决方案3】:
      xml = xml.replaceFirst("(?<=\<MessageNumber>)\d*", newValue);
      

      将用你想给它的任何 newValue 替换元素中存在的任何值(假设 newValue 和 xml 都是 String 对象)。

      【讨论】:

      • 谢谢您,我会尝试然后回复您...但是如果...我只想替换 下的 的值 ?
      • 您的意思是,您的 xml 字符串中可能还有其他 MessageNumber 元素?
      • 是的,顺便说一句,上面的代码工作正常
      • 请看我更新的帖子...谢谢
      • 如果您要更改的始终高于其他/s,您可以简单地使用 xml.replaceFirst( ... ) 而不是 xml.replaceAll( ... )。我已编辑我的答案以包含此更改。
      猜你喜欢
      • 2011-09-23
      • 2020-05-04
      • 2018-01-06
      • 1970-01-01
      • 2017-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多