libwordring
関数
wordring::css 名前空間

関数

template<typename NodePointer , typename String , typename OutputIterator >
void query_selector_all (NodePointer np, String const &selector, OutputIterator out)
 セレクタと合致するノードをすべて列挙する [詳解]
 
template<typename NodePointer , typename String >
NodePointer query_selector (NodePointer np, String const &selector)
 セレクタと合致する最初のノードを返す [詳解]
 

詳解

公開の名前空間

関数詳解

◆ query_selector_all()

template<typename NodePointer , typename String , typename OutputIterator >
void wordring::css::query_selector_all ( NodePointer  np,
String const &  selector,
OutputIterator  out 
)
inline

セレクタと合致するノードをすべて列挙する

テンプレート引数
NodePointerノードへのポインタあるいはイテレータ
StringUTF-8 UTF-16 UTF-32 といったユニコード文字列
OutputIterator出力イテレータ
引数
[in]np起点となるノードへのポインタあるいはイテレータ
[in]selectorセレクタ文字列
[out]out合致するノードを書き込む出力イテレータ

起点となるノード自身はセレクタと一致しません。

セレクタ文字列は UTF-8 UTF-16 UTF-32 といったユニコード文字列であれば十分であり、 HTML ノードの文字コードと一致させる必要はありません。

出力イテレータは、std::vector<NodePointer> といったコンテナへの std::back_inserter が一般的です。

namespace css = wordring::css;
namespace html = wordring::html;
std::string_view sv = u8"<p>text1</p><p>text2</p>";
html::u8simple_tree doc = html::make_document<html::u8simple_tree>(sv.begin(), sv.end());
std::vector<html::u8simple_tree::const_iterator> v;
css::query_selector_all(doc.begin(), u"p", std::back_inserter(v));
std::u32string s;
html::to_string(v[0], std::back_inserter(s)); // s == U"text1"
参照
https://triple-underscore.github.io/DOM4-ja.html#dom-parentnode-queryselectorall
https://dom.spec.whatwg.org/#dom-parentnode-queryselectorall

◆ query_selector()

template<typename NodePointer , typename String >
NodePointer wordring::css::query_selector ( NodePointer  np,
String const &  selector 
)
inline

セレクタと合致する最初のノードを返す

テンプレート引数
NodePointerノードへのポインタあるいはイテレータ
StringUTF-8 UTF-16 UTF-32 といったユニコード文字列
引数
[in]np起点となるノードへのポインタあるいはイテレータ
[in]selectorセレクタ文字列

起点となるノード自身はセレクタと一致しません。

セレクタ文字列は UTF-8 UTF-16 UTF-32 といったユニコード文字列であれば十分であり、 HTML ノードの文字コードと一致させる必要はありません。

namespace css = wordring::css;
namespace html = wordring::html;
std::u32string_view sv = U"<p>text1</p><p>text2</p>";
html::u8simple_tree tree = html::make_document<html::u8simple_tree>(sv.begin(), sv.end());
html::u8simple_tree::const_iterator it = css::query_selector(tree.begin(), u"p");
std::u16string s;
html::to_string(it, std::back_inserter(s)); // s == u"text1"
参照
https://triple-underscore.github.io/DOM4-ja.html#dom-parentnode-queryselector
https://dom.spec.whatwg.org/#dom-parentnode-queryselector
wordring::css::query_selector
NodePointer query_selector(NodePointer np, String const &selector)
セレクタと合致する最初のノードを返す
Definition: selector.hpp:87
wordring::html
wordring::css::query_selector_all
void query_selector_all(NodePointer np, String const &selector, OutputIterator out)
セレクタと合致するノードをすべて列挙する
Definition: selector.hpp:51
wordring::css
Definition: selector.hpp:12
wordring::html::u8simple_tree
tag_tree< u8simple_node > u8simple_tree
文字列としてstd::u8string を使用する HTML 木コンテナ
Definition: simple_html.hpp:31