请注意,我是 C# 新手,我现在正在学习它:) 我找不到与我的问题类似的东西,所以我来到这里。
我有一个添加客户的应用程序(处于最后阶段)。所有客户都存储在 XML 文件中。每个客户都会获得一个新的客户编号。在我的 xml 文件中,我得到了一个XmlNode名为CustNo. 现在,如果用户添加一个新客户并输入一个已经存在的号码,则应该弹出一个消息框,告知该号码已经存在。我得到了这个 C# 代码:
XDocument xdoc = XDocument.Load(path + "\\save.xml");
var xmlNodeExist = String.Format("Buchhaltung/Customers/CustNo");
var CustNoExist = xdoc.XPathSelectElement(xmlNodeExist);
if (CustNoExist != null)
{
MessageBox.Show("asdf");
}
Run Code Online (Sandbox Code Playgroud)
我的 XML 文件如下所示:
<Buchhaltung>
<Customers>
<CustNo>12</CustNo>
<Surname>Random</Surname>
<Forename>Name</Forename>
<Addr>Address</Addr>
<Zip>12345</Zip>
<Place>New York</Place>
<Phone>1234567890</Phone>
<Mail>example@test.com</Mail>
</Customers>
<Customers>
<CustNo>13</CustNo>
<Surname>Other</Surname>
<Forename>Forename</Forename>
<Addr>My Address</Addr>
<Zip>67890</Zip>
<Place>Manhattan</Place>
<Phone>0987654321</Phone>
<Mail>test@example.com</Mail>
</Customers>
</Buchhaltung>
Run Code Online (Sandbox Code Playgroud)
但之后总是弹出消息框。我究竟做错了什么?
这是因为您的 XPath 返回所有CustNo元素,无论其内容如何。
尝试以下操作:
var myNumber = 12;
var xmlNodeExist = String.Format("Buchhaltung/Customers/CustNo[. = {0}]", myNumber.ToString());
Run Code Online (Sandbox Code Playgroud)
或使用FirstLINQ to XML:
var myNumber = 12;
var xmlNodeExist = "Buchhaltung/Customers/CustNo";
var CustNoExist = xdoc.XPathSelectElements(xmlNodeExist).FirstOrDefault(x => (int)x == myNumber);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2629 次 |
| 最近记录: |