私は文書を調べましたが、xmlDocPtr
からxpath検索を実行できるのはxpath contextです。とにかくありますかlibxml2からxpathへの検索はxmlNodePtr
からですか?libxml2:xmlNodeからのxpath
答えて
xmlNodePtr
をxmlDocPtr
に、逆にキャストすることができます。文書の実際のトップレベルxmlDocPtr
を指定
コールxmlXPathNewContext
は()、次いでxmlDocPtr
文書の子であり、所望のxmlNodePtr
ポインタにxmlXPathContext::node
フィールドを設定します。
私は自分のコードでキャストしていますが、うまく動作しているようです。 xmlXPathNewContextを使用してこれをお勧めしますか?それは必要ではないようです。 'xmlXPathContextPtr xpContext = xmlXPathNewContext((xmlDocPtr)node);' – keegan3d
libxml2ソースコードを見ると、 'xmlDocPtr'パラメータが実際の' xmlDoc'オブジェクトを指すことを期待しています。これは、さまざまなAPI呼び出しの 'xmlDocPtr'パラメータとして内部的に渡されます。 'xmlXPathContext'は、作業中の実際の文書の子' xmlNodePtr'を追跡するために使用される別々の 'node'フィールドを持っています。 'xmlNodePtr'ポインターを型キャストされた' xmlDocPtr'ポインターとして渡すのは機能しているように見えるので、正しいことにはなりません。 –
- 1. Python libxml2 XPath/Namespace Help
- 2. Python XPath/libxml2名前空間クエリ
- 3. libxml2はXPath 2.0をサポートしていますか?
- 4. 文字列からのXmlNodeのinnerText
- 5. GDataXML/Libxml2 XPath連結が機能しません
- 6. libxml2:xpathで名前空間が無視される
- 7. XmlNode Innertextのキャリッジリターン
- 8. C#ポータブルプロジェクトのXmlNode
- 9. 、libxml2の
- 10. XmlNode値とInnerText
- 11. xmlNode to objects
- 12. InnerText XmlNode C#
- 13. インストールエラー:libxml2
- 14. XmlNode値の代わりにXmlNode値が残ります
- 15. と「libxml2の」
- 16. エラー:libxml2の
- 17. XPATH(libxml2)にプレフィックスを省略すると、セグメント化エラーが発生する
- 18. libxml2ライターの違い
- 19. libxml2 with Android NDK
- 20. LibXml2 with C/C++
- 21. XmlNodeListからXmlNodeを削除する方法
- 22. XmlNodeからテキストを削除するには?
- 23. XPathNavigatorが有効なXmlNodeにXPathを取得するにはどうすればよいですか?
- 24. のlibxml2は-DEV raspbian/Debianの
- 25. LibXML2 Saxの解析とアンパサンド
- 26. libxml2空のタグを保持
- 27. XMLNodesコレクション内のxQuery単一XMLNode
- 28. YQL XPathのYahooパイプからの配信
- 29. xpathを使ってlibxml2を使ってC++のxmlファイルからノードと特定の要素文字列を取り出す方法は?
- 30. libxml2 C APIを使用してschematronアサートから<value-of select = '' xpath here ''>値を取得することはできますか?
libxml2では、型キャストされた子の 'xmlNodePtr'ポインタではなく、実際の最上位の' xmlDocPtr'ポインタで 'xmlXPathNewContext()'を呼び出す必要があります。 –
ええと私はキャストをやっているし、問題なく動作しているようだ。メモリリークやデータ破損はありません。このアプリは現在1000回以上ダウンロードされており、xmlパーサーで実行されるデータに関する苦情はありません。このアプリのxpathコードはオープンソースです:https://github.com/kgn/KGLib/blob/master/Shared/KGXPath.m – keegan3d
私は私の以前のコメントに立っています。 XPath自体は、指定された 'xmlDocPtr'から' children'リストにアクセスしています。これは 'xmlDocPtr'と' xmlNodePtr'の両方にメモリ内の同じオフセットで存在します。それが「働く」理由です。しかし、 'xmlDocPtr'は実際の' xmlDocPtr'を期待する様々なAPI関数に渡され、APIは 'xmlXPathNewContext()'が型キャストされた 'xmlNodePtr'ではなく' xmlDocPtr'を必要とすることを明確に述べています。あなたは本当にAPIが望んでいるものを尊重しなければなりません。 –