我正在尝试创建一个读取xml文件并搜索节点的Web服务。但每次我收到错误回复return base.Channel.MymethodName(username);
XmlDocument doc = new XmlDocument();
doc.Load("C:\\CustomerDatabase.xml");
XmlNode root = doc.DocumentElement;
string searchpath = "//CustomerInformation[CustomerName'" + name + "']";
XmlNode userNode = root.SelectSingleNode(searchpath);
如果我阻止这部分代码,其他一切都有效,所以我想我不是这样做的。我已经阅读了我可以在这里发布的所有帖子,但在这些问题上仍然没有运气。有什么建议或帮助吗?
更新
我的xml文件看起来像这样
<CustomerInfo>
<CustomerInformation>
<name>JohnDoe</name>
</CustomerInformation>
</CustomerInfo>
我开始评论我的代码的每一行,我认为这是一个问题
XmlNode userNode = root.SelectSingleNode(searchpath);
任何想法如何解决这个问题
第二编辑: 我试图打开文件,以便我可以看到输入的名称是否在XML文件中。所以几乎一个人在JohnDoe中输入它,如果它存在,它会发一个字符串说人已经存在。
答案 0 :(得分:0)
你的XPath对我来说很奇怪。我建议在这里查看:http://www.w3schools.com/xpath/xpath_syntax.asp
也许这会更好:
string searchpath = "//CustomerInformation[@CustomerName='" + name + "']";
正如其他人所说,你能提供内部异常吗?哪一行会引发错误?
答案 1 :(得分:0)
尝试,
string searchpath = "//CustomerInformation[name='JohnDoe']";
或使用Linq-XML。
var result = (from ele in XDocument.Load(@"c:\CustomerDatabase.xml").Descendants("CustomerInformation")
where ((string)ele.Element("name")) == "JohnDoe"
select ele).FirstOrDefault();
if(result!=null)
{
//
}
答案 2 :(得分:0)
string searchpath = "//CustomerInformation[./name='" + name + "']";