1

当 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 结构如下所示(移除开始结束箭头以允许在此处输入 Fields 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 /Fields

只要包含 URL 的字符串不包含在 XML 中,该代码就可以正常工作。

4

0 回答 0