2013-03-25 32 views
-1

我想通过在该内容中排除几个标签来检索xml的两个标签之间的所有内容。这是什么规则epxpression?例如,在下面的xml中,我想通过排除<updated tagClass="boolean">false</updated> and <voided tagClass="boolean">false</voided>标签来提取<ASObject mappedClass="com.taliantsoftware.claims.indemnity.PayeeAllocationDTO" encoding="0"></ASObject>之间的所有内容。获取两个标签之间的所有内容,通过排除其中的一些标签

<ASObject mappedClass="com.taliantsoftware.claims.indemnity.PayeeAllocationDTO" encoding="0"> 
    <payeecustomerid tagClass="double">2004570.0</payeecustomerid> 
    <amount tagClass="double">2131.2</amount> 
    <new tagClass="boolean">true</new> 
    <percent tagClass="double">100.0</percent> 
    <updated tagClass="boolean">false</updated> 
    <voided tagClass="boolean">false</voided> 
    <remainderindicator tagClass="boolean">true</remainderindicator> 
    <detailamountstatustypecode tagClass="String">pnd</detailamountstatustypecode> 
    <primary tagClass="boolean">true</primary> 
    <mailtoindicator tagClass="boolean">true</mailtoindicator> 
    <checkgroupnumber tagClass="double">1.0</checkgroupnumber> 
    <detailamountstatustypename tagClass="String">Pending</detailamountstatustypename> 
    </ASObject> 
+3

强烈建议**不要**尝试使用正则表达式在浏览器环境中从XML中提取数据(假设这就是您正在使用的)。您可以随时获取文档的XML DOM文档对象,然后使用它。 – 2013-03-25 22:55:08

+0

我没有使用浏览器。我有一个工具,它给了我这种xml作为回应。我想提取这个XML的一部分,并在随后的请求中使用它。这与浏览器无关! – user1614862 2013-03-25 23:01:11

+1

好的。如果你标记了一个'javascript'问题并且它不在浏览器环境中(你会注意到我标记这是一个假设),你真的应该在问题中说**,因为绝大多数使用JavaScript在浏览器中。您使用的是什么JavaScript环境?的NodeJS?犀牛? SilkJS? RingoJS? JScript的? – 2013-03-25 23:02:36

回答

0

如果你想只是删除更新和无效的标签,这个正则表达式应该工作:

var clean_xml = xml.replace(/<(updated|voided).*</\1>/,'') 

注:

  • 您可以添加其他的标签,但它们不可能用此正则表达式自动关闭
  • xml解析器更可靠

编辑

如果必须首先捕捉ASObject标签,正则表达式是不是很漂亮。用递归模式也许更好。

/(<ASObject.*)<(updated|voided).*<\/\2>(.*)<(updated|voided).*<\/\4>(.*<\/ASObject>)/ 

然后连接结果数组的索引1,3,5。

+0

其实我的工具期望正则表达式,并且我使用([^^] *?)这个表达式来捕获这两个标签之间的所有内容使用组表达式$ 1,并希望仅使用正则表达式从捕获的内容中过滤掉所提及的标记。如果这是不可能的正则表达式然后只有我会去的JavaScript。 – user1614862 2013-03-26 16:59:25

+0

任何使用正则表达式的解决方案? – user1614862 2013-03-27 05:47:45

相关问题