用Ruby替换文件中的文本
我需要读入一个xml格式的文件,但都塞进了一行,我需要解析该行以找到一个特定的属性,并用我指定的内容替换它的值 该文件可能包含:用Ruby替换文件中的文本,ruby,xml,Ruby,Xml,我需要读入一个xml格式的文件,但都塞进了一行,我需要解析该行以找到一个特定的属性,并用我指定的内容替换它的值 该文件可能包含: <?xml version="1.0" encoding="UTF-8" standalone="no"?><VerificationPoint type="Screenshot" version="2"><Description/><Verification object=":qP1B11_QLabel" type="PNG
<?xml version="1.0" encoding="UTF-8" standalone="no"?><VerificationPoint type="Screenshot" version="2"><Description/><Verification object=":qP1B11_QLabel" type="PNG">
我需要搜索此行,找到属性“Verification object=”并用我自己的字符串替换:qP1B11。请注意,如果可能的话,我不想替换字符串的\u QLabel“type=“PNG”>
部分
我不能使用sub,因为我不知道属性的值,它可以是任何东西,我相信我应该可以用正则表达式来实现这一点,但我以前从未使用过它们,我看到的所有例子都让我比以前更困惑
如果有人能给我一个优雅的答案(如果使用regexp,还有一个解释),那将是一个巨大的帮助
谢谢您有XML,所以请使用XML解析器。Nokogiri将简要介绍:
doc = Nokogiri::XML(that_string)
doc.search('Verification').each do |node|
node['object'] = node['object'].sub(/:qP1B11/, 'PANCAKES')
end
new_string = doc.to_xml
# <?xml version="1.0" encoding="UTF-8" standalone="no"?>\n<VerificationPoint type="Screenshot" version="2">\n <Description/>\n <Verification object="PANCAKES_QLabel" type="PNG">\n</Verification>\n</VerificationPoint>\n"
在任何一种情况下,您都需要调整您的正则表达式和替换项以满足您的需要。您有XML,因此请使用XML解析器。Nokogiri将简要介绍这一点:
doc = Nokogiri::XML(that_string)
doc.search('Verification').each do |node|
node['object'] = node['object'].sub(/:qP1B11/, 'PANCAKES')
end
new_string = doc.to_xml
# <?xml version="1.0" encoding="UTF-8" standalone="no"?>\n<VerificationPoint type="Screenshot" version="2">\n <Description/>\n <Verification object="PANCAKES_QLabel" type="PNG">\n</Verification>\n</VerificationPoint>\n"
在这两种情况下,您都需要调整正则表达式和替换项以满足您的需要。这不是答案,但请不要忘记:解析XML是一个已解决的问题。如果您可以找到属性“object”,您可以使用split(“”)根据其值获取要替换的字符串?这会为您提供所需内容吗?这不是答案,但让我们不要忘记:解析XML是一个已解决的问题。如果您可以找到属性“object”,您可以使用其值上的split(“”)来获取要替换的字符串吗?这会为您提供所需内容吗?