C#加载XML文件并读取它以查找节点

时间:2011-10-15 09:07:51

标签: c# xml load

我正在尝试创建一个读取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中输入它,如果它存在,它会发一个字符串说人已经存在。

3 个答案:

答案 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 + "']";