使用 CSV 文件中的键->值对替换 XML 中的多个字符串

加涅特

我有一个来自我们的应用程序服务器的转储,其中包含多个字符串的 XML。我对 userID 感兴趣,它嵌入在 XML 标签中,格式为 (lasfir1),如下面的 XML 示例所示:

<row>
  <string></string>
  <integer>2177</integer>
  <string>assignee =lasfir1 </string>
  <string>Firstname Lastname</string>
  <integer>10</integer>
  <string xsi:nil="true"/>
  <integer>450</integer>
</row>

<row>
  <string>#ffd600</string>
  <integer>2199</integer>
  <integer>23</integer>
  <integer>474</integer>
  <string>assignee</string>
  <string>lasfir1</string>
</row>

<row>
  <integer>1536</integer>
  <string>lasfir1</string>
  <integer>235</integer>
  <string>USER</string>
</row>

<row>
  <string>#ffd610</string>
  <integer>2200</integer>
  <integer>25</integer>
  <integer>464</integer>
  <string>assignee</string>
  <string>lisfar1</string>
</row>

要求是将字符串“lasfir1”仅转换为其等效的电子邮件 ID,该 ID 可在另一个 CSV(文本)文件中使用,该文件具有用户 ID 和电子邮件 ID 的键->值配对:

[email protected],lasfir1
[email protected],lisfar1
[email protected],firlas1

XML 可能并不总是相同的,但要搜索的是字符串,而不是它前面或后面的模式。

是否有一些简单的方法可以读取键-> 值对(在 CSV 文件中),检查 XML 文件中是否存在键(用户 ID),然后将其替换为“值”(电子邮件 ID)

这是一组 300 多个用户 ID 和电子邮件 ID 组合所必需的,所有这些组合可能都不在 XML 中。

堆栈0114106

看看这个 Perl one liner 解决方案:

$ cat gagneet.csv
[email protected],lasfir1
[email protected],lisfar1
[email protected],firlas1

$ cat gagneet.xml
<row>
  <string></string>
  <integer>2177</integer>
  <string>assignee =lasfir1 </string>
  <string>Firstname Lastname</string>
  <integer>10</integer>
  <string xsi:nil="true"/>
  <integer>450</integer>
</row>

. . . . 
. . . . 

$ perl -ne 'BEGIN { %kv=map{chomp;(split(",",$_))[1,0] } qx(cat gagneet.csv) ; $content=qx(cat gagneet.xml);while($content=~/(<row>)(.*?)(<\/row>)/smg) { $xml=$2;forea
ch $y (keys %kv) { $xml=~s/${y}/$kv{$y}/gm; } print "$1$xml$3\n"; } exit } '
<row>
  <string></string>
  <integer>2177</integer>
  <string>assignee [email protected] </string>
  <string>Firstname Lastname</string>
  <integer>10</integer>
  <string xsi:nil="true"/>
  <integer>450</integer>
</row>
<row>
  <string>#ffd600</string>
  <integer>2199</integer>
  <integer>23</integer>
  <integer>474</integer>
  <string>assignee</string>
  <string>[email protected]</string>
</row>
<row>
  <integer>1536</integer>
  <string>[email protected]</string>
  <integer>235</integer>
  <string>USER</string>
</row>
<row>
  <string>#ffd610</string>
  <integer>2200</integer>
  <integer>25</integer>
  <integer>464</integer>
  <string>assignee</string>
  <string>[email protected]</string>
</row>

如果您只想在标签之间进行编辑,那么

$ perl -ne 'BEGIN { %kv=map{chomp;(split(",",$_))[1,0] } qx(cat gagneet.csv) ; $content=qx(cat gagneet.xml);while($content=~/(<row>)(.*?)(<\/row>)/smg) { $xml=$2;forea
ch $y (keys %kv) { $xml=~s/<string>${y}<\/string>/<string>$kv{$y}<\/string>/gm; } print "$1$xml$3\n"; } exit } '

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在XML文件中查找和替换多个字符串

来自分类Dev

在XML文件中查找和替换多个字符串

来自分类Dev

如何使用 PowerShell 替换正确替换给定文件中的多个字符串

来自分类Dev

从字符串中替换多个字符,而不使用任何嵌套的替换功能

来自分类Dev

使用一组规则替换字符串中的多个字符

来自分类Dev

如何使用python将json中的多个字符串数组转换为csv?

来自分类Dev

替换多个文件中的多个字符串

来自分类Dev

如何使用str_replace替换PHP中的多个字符串?

来自分类Dev

使用Java中的Regex一次替换多个字符串

来自分类Dev

使用Javascript中的Regex一次替换多个字符串

来自分类Dev

如何使用str_replace替换PHP中的多个字符串?

来自分类Dev

需要在静态查询中对多个字符串值使用“ IN”

来自分类Dev

如何在Java中使用HashMap一次替换文件中的多个字符串

来自分类Dev

如何替换字符串中的多个字符?

来自分类Dev

替换字符串中的多个字符

来自分类Dev

在C#中的字符串中将多个字符替换为多个值

来自分类Dev

在C#中将多个字符替换为字符串中的多个值

来自分类Dev

PostgreSQL中的多个字符串替换

来自分类Dev

替换python中的多个字符串

来自分类Dev

Python:将多个字符串替换为文件中的多个字符串

来自分类Dev

用字典python中的值替换字符串中的多个字符

来自分类Dev

使用 csv 的特定行和列值替换文本文件中的几个字符

来自分类Dev

Windows命令行-替换单个字符串中的多个字符

来自分类Dev

对查询中的多个字符串使用like

来自分类Dev

在Python列表中查找并替换为多个字符串值

来自分类Dev

使用Matlab中的索引替换字符串中的一个字符

来自分类Dev

Linux将csv文件中的最后一个字符替换为新字符串

来自分类Dev

替换巨大字符串中多个字符串的最快方法

来自分类Dev

用react jsx元素替换字符串中的多个字符串

Related 相关文章

  1. 1

    在XML文件中查找和替换多个字符串

  2. 2

    在XML文件中查找和替换多个字符串

  3. 3

    如何使用 PowerShell 替换正确替换给定文件中的多个字符串

  4. 4

    从字符串中替换多个字符,而不使用任何嵌套的替换功能

  5. 5

    使用一组规则替换字符串中的多个字符

  6. 6

    如何使用python将json中的多个字符串数组转换为csv?

  7. 7

    替换多个文件中的多个字符串

  8. 8

    如何使用str_replace替换PHP中的多个字符串?

  9. 9

    使用Java中的Regex一次替换多个字符串

  10. 10

    使用Javascript中的Regex一次替换多个字符串

  11. 11

    如何使用str_replace替换PHP中的多个字符串?

  12. 12

    需要在静态查询中对多个字符串值使用“ IN”

  13. 13

    如何在Java中使用HashMap一次替换文件中的多个字符串

  14. 14

    如何替换字符串中的多个字符?

  15. 15

    替换字符串中的多个字符

  16. 16

    在C#中的字符串中将多个字符替换为多个值

  17. 17

    在C#中将多个字符替换为字符串中的多个值

  18. 18

    PostgreSQL中的多个字符串替换

  19. 19

    替换python中的多个字符串

  20. 20

    Python:将多个字符串替换为文件中的多个字符串

  21. 21

    用字典python中的值替换字符串中的多个字符

  22. 22

    使用 csv 的特定行和列值替换文本文件中的几个字符

  23. 23

    Windows命令行-替换单个字符串中的多个字符

  24. 24

    对查询中的多个字符串使用like

  25. 25

    在Python列表中查找并替换为多个字符串值

  26. 26

    使用Matlab中的索引替换字符串中的一个字符

  27. 27

    Linux将csv文件中的最后一个字符替换为新字符串

  28. 28

    替换巨大字符串中多个字符串的最快方法

  29. 29

    用react jsx元素替换字符串中的多个字符串

热门标签

归档