이것은 Nokogiri의 문서와 Stack Overflow에 대한 Nokogiri에 대한 많은 답변에서 다룹니다.
NodeSet 문서는 말한다 :
inner_text ⇒ 개체가라고도 : 텍스트
Node에 대한 설명서는 말한다 반면에 모두 포함 된 노드의 내부 텍스트가
개체를 가져옵니다 :
콘텐츠 ⇒ 개체 (#text, #inner_text)
이 노드의 내용을 반환합니다.
당신은 행동에서 볼 수 있습니다
require 'nokogiri'
doc = Nokogiri::XML(<<EOT)
<foo>my dog <bar>has</bar> <bar>fleas</bar> he gave <bar>to me</bar></foo>
EOT
doc.at('foo').text # => "my dog has fleas he gave to me"
doc.at('foo').children.map(&:text) # => ["my dog ", "has", " ", "fleas", " he gave ", "to me"]
공지 빈 문자열 " "
. 즉
</bar> <bar>
우리 인간은 XML에 해당되는 아무것도 생각하고 그것은 여전히 텍스트 노드의 HTML 좋아하지만
사이의 공간의 결과이므로,
children
을 통해 걸을 때 그것은 텍스트 노드부터 나타 아직 아이입니다. 일반적으로 더 엄격한 선택기를 사용하면 피할 수 있지만이 경우 검색하는 다른 문자열에도 불필요한 공백이 있기 때문에이 방법을 사용할 수 없습니다.아마이 대신 같은 것을 할 것 :
doc.at('foo').children.map { |node| node.text.strip }
# => ["my dog", "has", "", "fleas", "he gave", "to me"]
나 : 지금까지
doc.at('foo').children.map { |node| node.text.strip }.reject { |node| node.empty? }.join(' ')
# => "my dog has fleas he gave to me"
:
doc.at('foo').children.map { |node| node.text.strip }.join(' ')
# => "my dog has fleas he gave to me"
나 :
doc.at('foo').children.map { |node| node.text.strip }.reject { |node| node.empty? }
# => ["my dog", "has", "fleas", "he gave", "to me"]
을 다음에 join(' ')
결과를 사용하여 무엇이인지 아는 것:
doc.root # => #<Nokogiri::XML::Element:0x3fecdc8a2434 name="foo" children=[#<Nokogiri::XML::Text:0x3fecdc8a7984 "my dog ">, #<Nokogiri::XML::Element:0x3fecdc8a795c name="bar" children=[#<Nokogiri::XML::Text:0x3fecdc8a72a4 "has">]>, #<Nokogiri::XML::Text:0x3fecdc8a7934 " ">, #<Nokogiri::XML::Element:0x3fecdc8a790c name="bar" children=[#<Nokogiri::XML::Text:0x3fecdc8a6e94 "fleas">]>, #<Nokogiri::XML::Text:0x3fecdc8a78e4 " he gave ">, #<Nokogiri::XML::Element:0x3fecdc8a78bc name="bar" children=[#<Nokogiri::XML::Text:0x3fecdc8a6a84 "to me">]>]>
doc.root.name # => "foo"
링크 된 페이지 및 "[mcve]"와 함께 "[ask]"를 읽으십시오. 귀하의 질문에 잘 대답하지 않습니다. 당신은 우리에게 약간의 XML을 주었고 우리가 시도한 것을 우리에게 보여주지 않았다 : 우리는 원하는 출력과 함께 문제를 보여주는 최소한의 코드 예제가 필요하다. 나는 투표를하지 않겠지 만, 장래에 그러한 일을하십시오. 왜냐하면 우리가 당신을 도우며 다른 사람들이 비슷한 해결책을 찾도록 도울 수 있기 때문입니다. –