NodeSetを返す必要があるxpathクエリを実行しているNokogiriノードがあります。代わりに文字列を返します。xml ソースを確認したところ、データには多くの要素ではなく 1 つの要素しか含まれていないことがわかりました。
String ではなく、値が 1 つだけの NodeSet を返すべきではありませんか? どうすればこれに対処できますか?
以下は、2 つのエントリを持つ NodeSet を正しく返す疑似xml です。
<root>
<products>
<product>
<productID>1</productID>
</product>
<product>
<productID>2</productID>
</product>
</product>
</root>
疑似xpath クエリは次のとおりです。
//root/products/product
XML に 1 つの製品しか含まれていない場合、1 つのエントリを持つ NodeSet ではなく String を取得します。
<root>
<products>
<product>
<productID>1</productID>
</product>
</product>
</root>
更新 2012 年 6 月 12 日: これはまだ Nokogiriのバグだと思います。上記の疑似 xml では状況が再現されませんが、問題を再現するクライアントからの xml の例がいくつかあります。おそらく難読化されたバージョンのxmlを投稿できます。いずれにせよ、 Nokogiriの代わりにXmlSimpleを使用するようにコードを変更しました。