替换XML文件中的空格字符

时间:2018-03-15 15:06:42

标签: xml shell

我想替换XML文件中的空格字符,例如:

从:

<UserDescription>
 <userName>Test User 1</userName>
</UserDescription>

为:

<UserDescription>
    <userName>Test_User_1</userName>
</UserDescription>

首选使用sed,因为这是目前最可行的选择。

感谢任何建议或反馈。感谢

3 个答案:

答案 0 :(得分:3)

不要使用正则表达式解析HTML,请使用正确的XML / HTML解析器。

理论:

根据编译理论,无法使用基于finite state machine的正则表达式解析HTML。由于HTML的层次结构,您需要使用pushdown automaton并使用LALR等工具操作YACC语法。

中的realLife©®™日常工具:

您可以使用以下其中一项:

xmllint

xmlstarlet

saxon-lint(我自己的项目)

检查:Using regular expressions with HTML tags

使用

的示例
xmlstarlet edit -L -u '//userName' \
  -x 'translate(//userName/text(), " ", "_")' file.xml

输出:

$ cat file.xml
<?xml version="1.0"?>
<UserDescription>
  <userName>Test_User_1</userName>
</UserDescription>

答案 1 :(得分:0)

使用(为了好玩):

from lxml import etree

myXML = 'file.xml'
tree = etree.parse(myXML)
root = tree.getroot()
code = root.xpath("//userName")
code[0].text = code[0].text.replace(' ', '_')
print(code[0].text)

etree.ElementTree(root).write(myXML, pretty_print=True)

输出:

$ cat file.xml
<?xml version="1.0"?>
<UserDescription>
  <userName>Test_User_1</userName>
</UserDescription>

答案 2 :(得分:0)

使用也是为了好玩:

n*n*n*n