[解決済み] "式はノードセットとして評価されなければならない"
質問
問題があります
私のXMLファイルはこちらです。
<altinkaynak>
<DOVIZ>
<ADI>Tarih</ADI>
<ALIS>24.07.2013 18:59:45</ALIS>
<SATIS/>
</DOVIZ>
<DOVIZ>
<ADI>USD</ADI>
<ALIS>1.9120</ALIS>
<SATIS>1.9220</SATIS>
</DOVIZ>
<DOVIZ>
<ADI>EUR</ADI>
<ALIS>2.5280</ALIS>
<SATIS>2.5430</SATIS>
</DOVIZ>
</altinkaynak>
このXMLファイルをどのようにパースすればよいのでしょうか?
そのようにコーディングしたのですが、パースエラーのメッセージが表示されました。
if (tip == DövizKuruTipi2.Alış)
Line 44: return Decimal.Parse(doc.SelectNodes("//ALTINKAYNAK/DOVIZ/ADI=" + dovizKuru2 + "/ALIS")[0].InnerText.Replace('.', ','));
式はノードセットとして評価されなければなりません。
どのように解決するのですか?
エラーの理由
エラーメッセージの通りです。
.SelectNodes()
が必要です。
xpath
文字列パラメータがノードセットとして評価される場合、例えばこの xpath は
XmlNodeList
3つのノードを含む。
var nodeSet = document.SelectNodes("/altinkaynak/DOVIZ");
を供給する。
xpath
を返しますが、単一のノードを返すこともできます。
XmlNodeList
は単一のノードを持つだけである。
var nodeSet = document.SelectNodes("(/altinkaynak/DOVIZ)[1]");
ただし、スカラー式のようなノード以外の値を返すことはできない。
var nodeSet = document.SelectNodes("count(/altinkaynak/DOVIZ)");
エラーです。式はノードセットとして評価されなければなりません。
代わりに
XmlDocument
ナビゲータを作成し、式をコンパイルし、それを評価する必要があります。
var navigator = document.CreateNavigator();
var expr = navigator.Compile("count(/altinkaynak/DOVIZ)");
var count = navigator.Evaluate(expr); // 3 (nodes)
Xml パーススタックを
XmlDocument
から
Linq to Xml
XDocument
があります。
より簡潔な方法
を使用してスカラー式を評価します。
var count = xele.XPathEvaluate("count(/altinkaynak/DOVIZ)");
不正なXpathの形成
これと同じエラー(
Expression must evaluate to a node-set
) も頻繁に返されます。
xpath
は完全に無効です。
var nodeSet = document.SelectNodes("{Insert some really badly formed xpath here!}");
エラーです。式はノードセットとして評価されなければなりません。
OPの質問
Xpathにエラーがあります。あなたが欲しいのはおそらくこれです。
doc.SelectNodes("//ALTINKAYNAK/DOVIZ[ADI='" + dovizKuru2 + "']/ALIS") // ...
を返します。
ALIS
の子である
DOVIZ
を持つ要素で
ADI
の子で、値が
dovizKuru2
(などの通貨用の変数と思われる)。
USD
)
関連
-
[解決済み] エンティティタイプ ApplicationUser は、現在のコンテキストのモデルの一部ではありません。
-
[解決済み】SmtpException: トランスポート接続からデータを読み取れません:net_io_connectionclosed
-
[解決済み] UnityでOnCollisionEnterが呼ばれない
-
[解決済み】Visual studio 2019がデバッグ時にフリーズする件
-
[解決済み】値をNULLにすることはできません。パラメータ名:source
-
[解決済み】OnCollisionEnter2Dが実行されない?
-
[解決済み】WSACancelBlockingCallの例外について
-
[解決済み】Linq 構文 - 複数列の選択
-
[解決済み】インデックスが範囲外でした。コレクションパラメータname:indexのサイズより小さく、非負でなければなりません。
-
[解決済み] XMLを解析して、特定のノード属性のインスタンスをカウントするには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】エラー。「戻り値を変更できません」 C#
-
[解決済み】「未割り当てのローカル変数を使用」とはどういう意味ですか?
-
[解決済み】WebForms UnobtrusiveValidationModeは、jqueryのScriptResourceMappingを必要とする
-
[解決済み】トランスポート接続からデータを読み取れない:既存の接続は、リモートホストによって強制的に閉じられました。
-
[解決済み】Sequence contains no matching element(シーケンスにマッチする要素がない
-
[解決済み] EntityTypeにキーが定義されていないエラー
-
[解決済み】Unity 「関連するスクリプトを読み込むことができません」「Win32Exception: システムは指定されたファイルを見つけることができません"
-
[解決済み】Visual Studio: 操作を完了できませんでした。パラメータが正しくありません
-
[解決済み】URLから画像をダウンロードする方法
-
[解決済み] XDocument または XmlDocument