-1

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

<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>
4

1 回答 1

0

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

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

笔记:

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

编辑

如果您必须首先捕获 ASObject 标记,则正则表达式不是很漂亮。使用递归模式可能会更好。

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

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

于 2013-03-26T01:32:45.190 回答