繁体   English   中英

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

[英]C# Loading an XML file and reading it to find a node

我试图创建一个读取xml文件并搜索节点的Web服务。 但是每次我return base.Channel.MymethodName(username);错误时都说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);

任何想法我该如何解决

2nd Edit:我正在尝试打开文件,以便可以看到输入的名称是否在XML文件中。 因此,如果JohnDoe存在,那么几乎有人输入该字符串,它会发送一个字符串,说明有人已经存在。

您的XPath对我来说很奇怪。 我建议您看这里: http : //www.w3schools.com/xpath/xpath_syntax.asp

也许这样会更好:

string searchpath = "//CustomerInformation[@CustomerName='" + name + "']"; 

正如其他人所说,您可以提供内部异常吗?哪一行引发错误?

尝试,

 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)
   {
    //
   }
string searchpath = "//CustomerInformation[./name='" + name + "']";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM