在Javascript中替换一行

时间:2015-03-30 03:44:26

标签: regex

我对正则表达式有点新意。 我在xml文件中有一行,我想用null替换。我怎么能这样做?

<ns0:TradeMessage xmlns:ns0="http://aptp.accenture.com/BuySell">
      // Some More codes.
</ns0:TradeMessage>

预期结果 - 合并删除<ns0::>标记以获得null。意味着我的输出不应该有第一行和最后一行。

我已经尝试过使用许多正则表达式,但我无法获得完整的结果

2 个答案:

答案 0 :(得分:0)

以下示例将您的示例XML分配给JavaScript变量string。然后它使用正则表达式删除ns0:TradeMessage标记。值得注意的是,由于\n个新行字符,我在标记之间使用了[\S\s]*?,这些标记将匹配包含新行的任何字符。

<script type="text/javascript">

    var xml = '<ns0:TradeMessage xmlns:ns0="http://aptp.accenture.com/BuySell">\n      // Some More codes.\n</ns0:TradeMessage>';

    document.write(xml);

    xml = xml.replace(/<ns0:TradeMessage\sxmlns:ns0="http:\/\/aptp\.accenture\.com\/BuySell">[\S\s]*?<\/ns0:TradeMessage>/g, "null")

    document.write(xml);

</script>

答案 1 :(得分:0)

通常,您不应使用正则表达式来修改XML(或HTML)。相反,使用一个解析器来获取XML并从中构造一个DOM树,然后您可以修改它。为此,所有现代浏览器都支持DomParser对象。

话虽如此,这是一个快速而肮脏的正则表达式,可以在这种特定情况下做你想做的事情。只有在>标记的属性中没有关闭尖括号(大于号,ns0:TradeMessage)时,此方法才有效。

xmlString = xmlString.replace(/<\/?ns0:TradeMessage[^>]*>/g, "");

正则表达式的细分:

<                   // opening angle bracket
\/?                 // optionally, a slash (present only in closing tag)
ns0:TradeMessage    // tag name
[^>]*               // sequence of zero or more characters that are not closing angle brackets
>                   // closing angle bracket