引发异常:System.Xml.dll

时间:2018-07-29 17:16:51

标签: c# asp.net xml xslt

每当我尝试保存帖子时,都会出现这样的错误

  

抛出异常:System.Xml.dll中的'System.Xml.XPath.XPathException'

供您参考: 我正在从XSLT文件发送响应查询字符串

 <td><a class="btn btn-default" href="EditPost.aspx?pid={@pid}">Edit</a> <a class="btn btn-danger" href="#">Delete</a></td>

接下来,一个Web表单将捕获查询字符串并从我的xml数据中读取选定的帖子。

 protected void Update_btn_click(object sender, EventArgs e)
    {
        string new_title = newtitle.Text.ToString();
        string new_description = update_des.Value.ToString();
        string postid = Request.QueryString["pid"];
        string docPath = @"~/Data/blog_post.xml";
         XmlDocument xml_doc = new XmlDocument();

        xml_doc.Load(Server.MapPath(docPath));

        XmlNode elemList = xml_doc.SelectSingleNode("/Posts/post[@pid=" + postid + "]/title");
        System.Diagnostics.Debug.WriteLine(elemList);
    }

我的XML数据:

<Posts>
    <post pid="pid2623">
    <title>Test</title>
    <description>Test</description>
    <subtitle>Test</subtitle>
    <date>7/29/2018 12:00:00 AM</date>
    <author>est</author>
  </post>
</Posts>

1 个答案:

答案 0 :(得分:1)

您可以在XPath中将类似pid2623的值视为字符串,但是为此您需要将其用引号引起来,例如xml_doc.SelectSingleNode("/Posts/post[@pid='" + postid + "']/title")xml_doc.SelectSingleNode(string.Format("/Posts/post[@pid='{0}']/title", postid))