http:// アドレスが Q91_1 にロードされているときに「Qx_x」のいずれかに関連付けられた値を返そうとすると、ナビゲーターは「ProjectId」の「Id」を有効なトークンとして解釈するため失敗します。 "f id=" のみをピックアップします。Navigator が正しく機能しないようにするために作成された式を変更する方法はありますか?
public string GetResponsesValue(string fieldHeading) {
// Use XPath to get the response value.
string expr = string.Format("/Fields/f[@id=\"{0}\"]", fieldHeading);
XPathNodeIterator xpni = Navigator.Select(expr);
return xpni.MoveNext() ? xpni.Current.Value : null;
}
// Cached XPathNavigator
private XPathNavigator xpn;
private XPathNavigator Navigator {
get {
if (xpn == null) {
XPathDocument xpd = new XPathDocument(new StringReader(SurveyResponses));
xpn = xpd.CreateNavigator();
}
return xpn;
}
}
上記の StringReader で参照されている「SurveyResponses」のデータを以下に示します。
DataResponse XML 構造は次のようになります (開始と終了の矢印は削除され、ここに入力できるようになります フィールド f id="Q21_1">30121 /f f id="Q91_1">http://xxx.yyy.net/run.aspx?GroupId=188&ProjectId= 1096&RecordId=634 /f f id="Q48_3">22101 /f /フィールド
URL を含む文字列が XML に含まれていない限り、コードは正常に機能します。