我有这个功能删除一些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 { }
}
}
答案 0 :(得分:2)
如果x
仅包含数字,XPath会将该值解释为数字。如果x
也包含字母,则会将其解释为字符串,并且需要引用:
xmldoc.SelectSingleNode("//Reservedele/Component[Varenummer='" + x + "']");
^ ^