当http://地址加载到Q91_1时,尝试返回与任何“Qx_x”关联的值时,导航器失败,因为它将“ProjectId”中的“Id”解释为有效令牌 - 即使目的是只提取“f id =”。有没有办法改变创建的表达式以防止导航器无法正常工作?
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中,代码就可以正常工作。