SXD-XPathを使用してノードセットを反復処理し、すべての値を出力するにはどうすればよいですか?

メンボルグ

sxd-xpathクレートを使用してXMLをクエリしようとしていますが、ノードセットの処理方法がわからないようです。

クレートと使用

extern crate sxd_document;
extern crate sxd_xpath;

use sxd_document::parser;
use sxd_xpath::{Factory, Context, Value};

実際のコード

let package = parser::parse("<feed><title>hest</title><title>hest2</title><title>hest3</title><title>hest4</title></feed>").expect("failed to parse XML");
let document = package.as_document();

let factory = Factory::new();
let xpath = factory.build("/feed/title").expect("Could not compile XPath");
let xpath = xpath.expect("No XPath was compiled");

let context = Context::new();

let value = xpath.evaluate(&context, document.root()).expect("XPath evaluation failed");

すべてのノードを繰り返し処理しての値を出力したいのですが<title>、その方法がわかりません。

私はRustの世界ではかなり新しいので、C#とPythonを使用しています。

シェップマスター

XPath::evaluateを返しますValue

fn evaluate<'d, N>(
    &self,
    context: &Context<'d>,
    node: N,
) -> Result<Value<'d>, ExecutionError>
where
    N: Into<Node<'d>>,

AValueは、XPathの可能な値(数値、ブール値、文字列、またはノードセット)の列挙です。あなたの場合、ノードセットに関心があるので、そのバリアントに一致させる必要があります。

if let Value::Nodeset(nodes) = value {
    // ...
}

Nodesetを実装IntoIteratorしているので、forループで使用できます。

for node in nodes {
    // ...
}

生成される各値はになりますNodeこれは、XMLドキュメント内のさまざまなタイプのノードすべての列挙です。あなたはに興味がありElementます。場合は、すべてあなたが気には要素の文字列値では、使用することができますNode::string_valueこれにより、それぞれが独自のテキストを持つ複数の子ノードの複雑さが隠されます。

println!("{}", node.string_value());

すべてをまとめる:

if let Value::Nodeset(nodes) = value {
    for node in nodes {
        println!("{}", node.string_value());
    }
}

AにNodesetは保証された順序がないため、ドキュメント内のノードの順序を指定する場合は、次のように呼び出すことができますNodeset::document_order

if let Value::Nodeset(nodes) = value {
    for node in nodes.document_order() {
        println!("{}", node.string_value());
    }
}

免責事項:私はSXD-DocumentとSXD-XPathの作成者です

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

SXD-XPathで名前空間属性の値を選択するにはどうすればよいですか?

分類Dev

sxd-ドキュメント/ sxd-xpathがXMLの解析に失敗する

分類Dev

Tensorflow SxN行列にSxD行列を乗算して、SxNxD配列を出力します

分類Dev

javascriptで選択した範囲内のすべてのノードを反復処理するにはどうすればよいですか?

分類Dev

Python 3を使用してGoogleシートのすべてのシートを反復処理するにはどうすればよいですか?

分類Dev

Googleスクリプトを使用してすべてのシートを反復処理するにはどうすればよいですか?

分類Dev

拡張forループを使用して、別のメソッドにあるHashSetを反復処理するにはどうすればよいですか?

分類Dev

OpenPyXLを使用してExcelテーブルのすべての行を反復処理するにはどうすればよいですか?

分類Dev

リストとして値を使用してマップを反復処理するにはどうすればよいですか?

分類Dev

Pythonとleveldbを使用してすべてのキーを反復処理するにはどうすればよいですか?

分類Dev

IMongoCollection <>を反復処理して、すべての要素を出力するにはどうすればよいですか?

分類Dev

テーブルを反復処理して列の値を出力するにはどうすればよいですかSeleniumWebdriver Python

分類Dev

forループを使用して関数を反復処理するにはどうすればよいですか?

分類Dev

jQueryを使用してdivの子要素を反復処理するにはどうすればよいですか?

分類Dev

オブジェクトの値としてdomセレクターを使用してオブジェクトを反復処理し、それらを使用して値を設定するにはどうすればよいですか?

分類Dev

QTreeViewを反復処理して、一致するすべてのセルに色を付けるにはどうすればよいですか?

分類Dev

リストのすべての値を反復処理するforループをHaskellに実装するにはどうすればよいですか?

分類Dev

繰り返されるデータセットを反復処理して月間合計を取得するにはどうすればよいですか?

分類Dev

すべてのContentresolverエントリを反復処理するにはどうすればよいですか?

分類Dev

ペアの配列リストを反復処理して、指定したキーの値を取得するにはどうすればよいですか?

分類Dev

forループを使用せずに、画像内のすべてのピクセルを反復処理し、それらのRGB値を別のRGB値と比較するにはどうすればよいですか?

分類Dev

selectSingleNodeでノードを選択した後、ノードの子ノードを反復処理するにはどうすればよいですか?

分類Dev

スレッドを使用してPythonリストのすべてのデータを同時に処理するにはどうすればよいですか?

分類Dev

Ansibleで、配列を使用してstdoutを反復処理するにはどうすればよいですか?

分類Dev

テーブルを反復処理して各値のハッシュを作成するにはどうすればよいですか?

分類Dev

セットがユーザー定義の型をswiftに格納しているときに、特定の順序でセットの値を反復処理するにはどうすればよいですか?

分類Dev

行を反復処理するときにマスクを使用してDataFrameの値を更新するにはどうすればよいですか

分類Dev

Pythonでステッパー変数を使用してリストを反復処理するにはどうすればよいですか?

分類Dev

正規表現を使用して文字を反復処理するにはどうすればよいですか?

Related 関連記事

  1. 1

    SXD-XPathで名前空間属性の値を選択するにはどうすればよいですか?

  2. 2

    sxd-ドキュメント/ sxd-xpathがXMLの解析に失敗する

  3. 3

    Tensorflow SxN行列にSxD行列を乗算して、SxNxD配列を出力します

  4. 4

    javascriptで選択した範囲内のすべてのノードを反復処理するにはどうすればよいですか?

  5. 5

    Python 3を使用してGoogleシートのすべてのシートを反復処理するにはどうすればよいですか?

  6. 6

    Googleスクリプトを使用してすべてのシートを反復処理するにはどうすればよいですか?

  7. 7

    拡張forループを使用して、別のメソッドにあるHashSetを反復処理するにはどうすればよいですか?

  8. 8

    OpenPyXLを使用してExcelテーブルのすべての行を反復処理するにはどうすればよいですか?

  9. 9

    リストとして値を使用してマップを反復処理するにはどうすればよいですか?

  10. 10

    Pythonとleveldbを使用してすべてのキーを反復処理するにはどうすればよいですか?

  11. 11

    IMongoCollection <>を反復処理して、すべての要素を出力するにはどうすればよいですか?

  12. 12

    テーブルを反復処理して列の値を出力するにはどうすればよいですかSeleniumWebdriver Python

  13. 13

    forループを使用して関数を反復処理するにはどうすればよいですか?

  14. 14

    jQueryを使用してdivの子要素を反復処理するにはどうすればよいですか?

  15. 15

    オブジェクトの値としてdomセレクターを使用してオブジェクトを反復処理し、それらを使用して値を設定するにはどうすればよいですか?

  16. 16

    QTreeViewを反復処理して、一致するすべてのセルに色を付けるにはどうすればよいですか?

  17. 17

    リストのすべての値を反復処理するforループをHaskellに実装するにはどうすればよいですか?

  18. 18

    繰り返されるデータセットを反復処理して月間合計を取得するにはどうすればよいですか?

  19. 19

    すべてのContentresolverエントリを反復処理するにはどうすればよいですか?

  20. 20

    ペアの配列リストを反復処理して、指定したキーの値を取得するにはどうすればよいですか?

  21. 21

    forループを使用せずに、画像内のすべてのピクセルを反復処理し、それらのRGB値を別のRGB値と比較するにはどうすればよいですか?

  22. 22

    selectSingleNodeでノードを選択した後、ノードの子ノードを反復処理するにはどうすればよいですか?

  23. 23

    スレッドを使用してPythonリストのすべてのデータを同時に処理するにはどうすればよいですか?

  24. 24

    Ansibleで、配列を使用してstdoutを反復処理するにはどうすればよいですか?

  25. 25

    テーブルを反復処理して各値のハッシュを作成するにはどうすればよいですか?

  26. 26

    セットがユーザー定義の型をswiftに格納しているときに、特定の順序でセットの値を反復処理するにはどうすればよいですか?

  27. 27

    行を反復処理するときにマスクを使用してDataFrameの値を更新するにはどうすればよいですか

  28. 28

    Pythonでステッパー変数を使用してリストを反復処理するにはどうすればよいですか?

  29. 29

    正規表現を使用して文字を反復処理するにはどうすればよいですか?

ホットタグ

アーカイブ