如何使用记事本的条件替换功能来选择和替换XML

问题描述 投票:0回答:1

我使用的 XML 有数百万行。

<trade idPosition="E56F58837T6827J1173K927479">
  <currency>BTCUSD</currency>
  <lotUSD>100000</lot>
  <typeOfContract>Futures</typeOfContract>
</trade>
<trade idPosition="S28L16487Q9127J7592O836105">
  <currency>ETHUSD</currency>
  <lotUSD>1000</lot>
  <typeOfContract>CFD</typeOfContract>
</trade>
<trade idPosition="B11F00000Z1547A1461H167729">
  <currency>SOLUSD</currency>
  <lotUSD>1000</lot>
  <typeOfContract>Futures</typeOfContract>
</trade>

我想将

<trade>
的所有节点替换为 void (
""
) 除了具有 typeOfContract
节点,将其替换为
CFD
值以获得:

<trade idPosition="S28L16487Q9127J7592O836105">
  <currency>ETHUSD</currency>
  <lotUSD>1000</lot>
  <typeOfContract>CFD</typeOfContract>
</trade>

我试过了

<trade guid=".*?">(?:(?!</?trade>).)*>CFD<.*?</trade>
但如果我将其放入搜索框中,然后将“”放入替换框中,则不起作用,并且会删除太多交易头寸...

notepad++
1个回答
0
投票

如果所有节点共享您发布的结构,则以下内容应该可以工作(尽管不是很优雅):

<trade .+>\r\n(.+\r\n){2}\h+<typeOfContract>(?!CFD)[^ ]*</trade>\r\n

我很难匹配任何字符串,但

CFD
这个答案帮助了我。希望这也能帮助你!

© www.soinside.com 2019 - 2024. All rights reserved.