如果字符串x中有字母,为什么不运行此函数?

时间:2017-02-17 05:50:51

标签: c# asp.net xml

我有这个功能删除一些XML。它仅以数字运行,但如果字符串中有字母,则不会运行,如果是混合(数字和字母),则会出错。任何人都可以帮助我吗?

我得到的错误是

  

“System.Xml.XPath.XPathException:   '// Reservedele / Component [Varenummer = 123eg]'有一个非法令牌。

//Udfør sletning af vare i map
protected void btnUdførSlet_Click(object sender, EventArgs e)
{
    string x = txtSletVare.Text;
    functions func = new functions();
    bool exists = func.checForMatch(txtSletVare.Text);

    XmlDocument xmldoc = new XmlDocument();
    xmldoc.Load(Server.MapPath(map));
    //XmlNodeList nodes = xmldoc.SelectNodes("//Component[Varenummer=" + x + "]");
    XmlNode noteTodelete = xmldoc.SelectSingleNode("//Reservedele/Component[Varenummer=" + x + "]");

    if (exists != true)
    {
        lblFejlSletVare.Text = "Varenummeret findes ikke";
    }
    else
    {
        try
        {
            if (noteTodelete != null)
            {
                noteTodelete.ParentNode.RemoveChild(noteTodelete);
            }
            xmldoc.Save(Server.MapPath(map));
            sletImapBackUp();
        }
        catch { }


    }
}

1 个答案:

答案 0 :(得分:2)

如果x仅包含数字,XPath会将该值解释为数字。如果x也包含字母,则会将其解释为字符串,并且需要引用:

xmldoc.SelectSingleNode("//Reservedele/Component[Varenummer='" + x + "']");
                                                            ^         ^