ruby - Nokogiri how to get the parent text and not the childs text and reference the text back to its parent -
मान लें कि मेरे पास यह नमूना है:
पेज = "& lt; html & gt; & lt; शरीर & gt; & lt; h1 class = 'foo' & gt; & lt; / h1 & gt; & lt; p वर्ग = 'foo' & gt; नमस्ते लोग & lt; a href = 'http: //' & gt; हैलो दुनिया & lt; / a & gt; & lt; / p & gt; & lt; / body & gt; & lt; / html & gt; " @ नोड्स = [] नोकोगीरी :: एचटीएमएल (पेज) .traverse do | n | | यदि n [: class] == "foo" @ नोड्स & lt; & lt; {: नाम = & gt; N.name,: xpath = & gt; N.path,: text = & gt; N.text} अंत समाप्ति
परिणाम n.text
के लिए होगा हैलो लोकहोल्लो विश्व
, मैं यह करना चाहता हूं एक तरह से मैं अभिभावक पाठ और उसके मूल पाठ प्राप्त कर सकता हूं, लेकिन उन्हें अपने टैग से संबंधित
इसलिए परिणाम कुछ ऐसा होगा
@nodes [0] [: पाठ] = "" @ नोड [1] [: पाठ] = [{:: एलिमेंटटेक्स 1 = & gt; "नमस्ते लोग",: एलिमेंट ऑब्जेक्ट 1 = & gt; ElementObject}, {: Elementtext2 = & gt; "हैलो वर्ल्ड" ,: एलिमेंट ओब्जेक्ट 2 = & gt; ElementObject}]
हम वहां जाते हैं
'रूबीगाम्स' की आवश्यकता 'नोकोगीरी' डॉक्टर = नोकोगीरी :: एचटीएमएल (डाटा। रीड) नोड्स = doc.root.css ('.foo')। संकलन करना | n | {: नाम = & gt; N.name,: xpath = & gt; N.path,: text = & gt; n.xpath ( '.// पाठ ()') एकत्र {|। टी | {: अभिभावक = & gt; T.parent.name,: text = & gt; T.text}}} एंड पी नोड्स __END__ & lt; html & gt; & LT; बॉडी & gt; & Lt; h1 वर्ग = 'foo' & gt; & lt; / h1 & gt; & Lt; p class = 'foo' & gt; नमस्ते लोग & lt; a href = 'http: //' & gt; हैलो वर्ल्ड & lt; / a & gt; & lt; / p & gt; & Lt; / body & gt; & Lt; / html & gt;
आप traverse
का उपयोग करके सभी तत्वों तक नहीं पहुंच सकते क्योंकि यह रूट के सीधे बच्चों का दौरा करता है। इसलिए, मैं कक्षा foo
वाले सभी तत्वों को प्राप्त करने के लिए सीएसएस चयनकर्ता का उपयोग करता हूं और फिर, प्रत्येक तत्व के लिए, मैं इसे नीचे सभी टेक्स्ट नोड्स प्राप्त करने के लिए एक्सपेथ चयनकर्ता का उपयोग करता हूं।
Comments
Post a Comment