如何使用 Nokogiri 将一个节点的 HTML 内容添加到另一个节点
How to add the HTML contents of one node to another with Nokogiri
正如标题所说,我想知道如何将一个节点的内容添加到另一个节点,例如。假设有一个节点:
<li>
<a>I'm a link</a>
<p>I'm a <b>paragraph</b></p>
</li>
还有一个节点我想在上面添加内容:
<p>
<a>Link1</a>
<a>Link2</a>
<a>Link3</a>
<a>Link4</a>
</p>
然后像这样将后一个节点卸载到前一个节点中:
<li>
<a>I'm a link</a>
<p>I'm a <b>paragraph</b></p>
<a>Link1</a>
<a>Link2</a>
<a>Link3</a>
<a>Link4</a>
</li>
我根据您的问题创建了两个 HTML DOM 片段。
这一行实质上结合了 @doc.at_css("li") << @doc1.at_css("p").children
这两个片段。
@doc.at("li")
returnsDOMNode
li
。
<<
附加 @doc1 DOM Node``p
的子元素,它们是四个 a
元素。
require 'nokogiri'
@doc = Nokogiri::HTML::DocumentFragment.parse <<-EOHTML
<li>
<a>I'm a link</a>
<p>I'm a <b>paragraph</b></p>
</li>
EOHTML
@doc1 = Nokogiri::HTML::DocumentFragment.parse <<-EOHTML
<p>
<a>Link1</a>
<a>Link2</a>
<a>Link3</a>
<a>Link4</a>
</p>
EOHTML
@doc.at("li") << @doc1.at("p").children
print @doc
<li>
<a>I'm a link</a>
<p>I'm a <b>paragraph</b></p>
<a>Link1</a>
<a>Link2</a>
<a>Link3</a>
<a>Link4</a>
</li>
正如标题所说,我想知道如何将一个节点的内容添加到另一个节点,例如。假设有一个节点:
<li>
<a>I'm a link</a>
<p>I'm a <b>paragraph</b></p>
</li>
还有一个节点我想在上面添加内容:
<p>
<a>Link1</a>
<a>Link2</a>
<a>Link3</a>
<a>Link4</a>
</p>
然后像这样将后一个节点卸载到前一个节点中:
<li>
<a>I'm a link</a>
<p>I'm a <b>paragraph</b></p>
<a>Link1</a>
<a>Link2</a>
<a>Link3</a>
<a>Link4</a>
</li>
我根据您的问题创建了两个 HTML DOM 片段。
这一行实质上结合了 @doc.at_css("li") << @doc1.at_css("p").children
这两个片段。
@doc.at("li")
returnsDOMNode
li
。
<<
附加 @doc1 DOM Node``p
的子元素,它们是四个 a
元素。
require 'nokogiri'
@doc = Nokogiri::HTML::DocumentFragment.parse <<-EOHTML
<li>
<a>I'm a link</a>
<p>I'm a <b>paragraph</b></p>
</li>
EOHTML
@doc1 = Nokogiri::HTML::DocumentFragment.parse <<-EOHTML
<p>
<a>Link1</a>
<a>Link2</a>
<a>Link3</a>
<a>Link4</a>
</p>
EOHTML
@doc.at("li") << @doc1.at("p").children
print @doc
<li>
<a>I'm a link</a>
<p>I'm a <b>paragraph</b></p>
<a>Link1</a>
<a>Link2</a>
<a>Link3</a>
<a>Link4</a>
</li>