我想在插入之前检查xml文件中特定“ <用户Id =“ any”>具有特定ID”下的“具有特定值(例如Pathankot)”的“ <city>”节点是否已经存在将新的城市节点插入xml。
< users>
< user Id="4/28/2015 11:29:44 PM">
<city>Fazilka</city>
<city>Pathankot </city>
<city>Jalandher</city>
<city>Amritsar</city>
</user>
</users>
为了插入,我正在使用以下c#代码
XDocument xmlDocument = XDocument.Load(@"C:\Users\Ajax\Documents\UserSelectedCity.xml");
string usrCookieId = Request.Cookies["CookieId"].Value;
xmlDocument.Element("Users")
.Elements("user")
.Single(x => (string)x.Attribute("Id") == usrCookieId)
//Incomplete because same named cities can be entered more that once
//need to make delete function
.Add(
new XElement("city", drpWhereToGo.SelectedValue));
我的问题:
XDocument xmlDocument =
XDocument.Load(@"C:\Users\Ajax\Documents\Visual Studio
2012\WebSites\punjabtourism.com\UserSelectedCity.xml");"
试试这个:-
首先,XDocument
通过指定XML文件所在的物理路径将XML文件加载到对象中。一旦有了对象,就取First
具有匹配条件的节点(请注意,我使用的是First而不是Single cz,您可能有多个具有相同匹配条件的节点,请参见Single和First的区别)
XDocument xmlDocument = XDocument.Load(@"YourPhysicalPath");
xmlDocument.Descendants("user").First(x => (string)x.Attribute("Id") == "1"
&& x.Elements("city").Any(z => z.Value.Trim() == "Pathankot"))
.Add(new XElement("city", drpWhereToGo.SelectedValue));
xmlDocument.Save("YourPhysicalPath");
最后,将所需的城市添加到从查询中检索到的节点并保存XDocument对象。
更新:
如果您想先检查所有条件是否都满足,则可以Any
这样简单地使用:-
bool isCityPresent = xdoc.Descendants("user").Any(x => (string)x.Attribute("Id") == "1"
&& x.Elements("city").Any(z => z.Value.Trim() == "Pathankot"));
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句