Ruby 使用正则表达式从xml字符串获取节点
我有如下字符串xml:Ruby 使用正则表达式从xml字符串获取节点,ruby,regex,Ruby,Regex,我有如下字符串xml: <Query> <Code>USD</Code> <Description>United States Dollars</Description> <UpdateTime>2013-03-04 02:27:33</UpdateTime> <toUSD>1</toUSD> <USDto>1</USDto> <toE
<Query>
<Code>USD</Code>
<Description>United States Dollars</Description>
<UpdateTime>2013-03-04 02:27:33</UpdateTime>
<toUSD>1</toUSD>
<USDto>1</USDto>
<toEUR>2</toEUR>
<EURto>3</EURto>
</Query>
所有文本都在一行中,没有空格。我写不出正确的正则表达式模式。我希望得到以
开头的节点,尽管普遍的共识是使用正则表达式解析xml等不是可行的方法,但类似这样的方法应该可以做到:
<\s*(to[^>\s]+)[^>]*>([^<]+)<\s*/\s*\1\s*>
\s]+)[^>]*>([^]*>([^带nokogiri,xpath函数以
开头:
require 'nokogiri'
doc = Nokogiri::XML <<EOF
<Query>
<Code>USD</Code>
<Description>United States Dollars</Description>
<UpdateTime>2013-03-04 02:27:33</UpdateTime>
<toUSD>1</toUSD>
<USDto>1</USDto>
<toEUR>2</toEUR>
<EURto>3</EURto>
</Query>
EOF
doc.search('//*[starts-with(name(),"to")]').map &:to_s
#=> ["<toUSD>1</toUSD>", "<toEUR>2</toEUR>"]
哪种语言?最好使用一个真正的XML库(或xpath,或除正则表达式以外的任何语言)。在Ruby中。对我来说,这是一个简短的纯文本,所以我决定使用正则表达式。@user1931951:一些选项:即使对于简单的(-looking)正则表达式/XML,也几乎不值得,因为有很多选项可用。
require 'nokogiri'
doc = Nokogiri::XML <<EOF
<Query>
<Code>USD</Code>
<Description>United States Dollars</Description>
<UpdateTime>2013-03-04 02:27:33</UpdateTime>
<toUSD>1</toUSD>
<USDto>1</USDto>
<toEUR>2</toEUR>
<EURto>3</EURto>
</Query>
EOF
doc.search('//*[starts-with(name(),"to")]').map &:to_s
#=> ["<toUSD>1</toUSD>", "<toEUR>2</toEUR>"]