: System.Xml.XPath.XPathException: 表达式的计算结果必须为节点集。
Chapter 6.0 example
异常详细信息: System.Xml.XPath.XPathException: 表达式的计算结果必须为节点集。
源错误:
行 39: XmlDocument doc = new XmlDocument();
行 40: doc.Load(xmlPath);
行 41: XmlNodeList nodeList = doc.DocumentElement.SelectNodes(ddlExpression.SelectedItem.Text);
行 42:
行 43: foreach (XmlNode node in nodeList)
源文件: c:\Inetpub\wwwroot\Chapter6\gg.aspx.cs 行: 41
堆栈跟踪:
[XPathException: 表达式的计算结果必须为节点集。]
Program:
public partial class gg : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
ddlExpression.Items.Add("//book/title");
ddlExpression.Items.Add("//book[@genre='novel']/title");
ddlExpression.Items.Add("//book/author/first-name");
ddlExpression.Items.Add("//book/[@genre='philosopohy']/title");
ddlExpression.Items.Add("//book/price");
ddlExpression.Items.Add("//book[3]/title");
ddlExpression.SelectedIndex =0;
//set the default selection
UpdateDisplay();
}
}
public void UpdateDisplay()
{
lblResult.Items.Clear();//clear content
string xmlPath = @"C:\Inetpub\wwwroot\Chapter6\books.xml";
XmlDocument doc = new XmlDocument();
doc.Load(xmlPath);
XmlNodeList nodeList = doc.DocumentElement.SelectNodes(ddlExpression.SelectedItem.Text);//?????这句不能通过测试
foreach (XmlNode node in nodeList)
{
lblResult.Items.Add("node name;" + node.Name);
if(node.FirstChild !=null)
lblResult.Items.Add("node value:" + node.FirstChild.Value);
}
}
protected void ddlExpression_SelectedIndexChanged(object sender, EventArgs e)
{
UpdateDisplay();
}
}