c#XPath Navigator Select语句由于对令牌的误解而失败

时间:2012-09-18 01:55:04

标签: xpathnavigator

当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中,代码就可以正常工作。

0 个答案:

没有答案