-1

そのコンテンツ内のいくつかのタグを除外することにより、xmlの2つのタグ間のすべてを取得したいと思います。これに対する通常の表現は何ですか?たとえば、以下の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 に答える