我对正则表达式有点新意。
我在xml文件中有一行,我想用null
替换。我怎么能这样做?
<ns0:TradeMessage xmlns:ns0="http://aptp.accenture.com/BuySell">
// Some More codes.
</ns0:TradeMessage>
预期结果 - 合并删除<ns0::>
标记以获得null
。意味着我的输出不应该有第一行和最后一行。
我已经尝试过使用许多正则表达式,但我无法获得完整的结果
答案 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