我有一个XML文件:
<?xml version="1.0" encoding="utf-8"?>
<Options>
<Gestion>
<Prêts>
<NbrRenouvlement>5</NbrRenouvlement>
<DureeEmprunt>10</DureeEmprunt>
<NbrEmprunt>3</NbrEmprunt>
</Prêts>
<Réservations>
<NbrReservation>3</NbrReservation>
<DureeReservation>7</DureeReservation>
</Réservations>
</Gestion>
<Config>
<RememberMe>False</RememberMe>
<ConnexionAutomatique>False</ConnexionAutomatique>
<ShowToolTip>True</ShowToolTip>
</Config>
</Options>
我想选择NbrRenouvlement的值为5,这是我写的代码:
String nbrReservation = String.Empty;
var makeInfo = from reservations in doc.Descendants("Réservations")
select reservations.Element("NbrReservation").Value;
但是这段代码返回一个通用列表,尽管我想要选择的值只是一个数字,所以我需要使用foreach循环:
foreach (string s in makeInfo.Distinct())
nbrReservation.Text += s;
这个方法工作正常,但是对于选择一个值来说太长了,是否还有其他方法允许我从该XML文件中选择NbrReservation的值?
如何更改此值?
答案 0 :(得分:3)
我想选择NbrRenouvlement
的值
您可以使用XPath(System.Xml.XPath)。
var five = xDoc.XPathSelectElement("//NbrRenouvlement").Value;
这是与你问题中的代码相似的代码
var xDoc = XDocument.Parse(xml);
var makeInfo = xDoc.XPathSelectElement("//Réservations/NbrReservation");
if (makeInfo != null)
{
var val = makeInfo.Value;
//makeInfo.Value = newValue;
}
答案 1 :(得分:1)
阅读并保存价值:
XDocument xdoc = XDocument.Load(path_to_xml);
var nbrReservation = xdoc.Descendants("Réservations")
.Single() // if you have single reservations node
.Element("NbrReservation");
int value = (int)nbrReservation;
nbrReservation.SetValue(42);
xdoc.Save(path_to_xml);
答案 2 :(得分:1)
这将为您提供字符串(IEnumerable<string>
):
var makeInfo = from reservations in doc.Descendants("Réservations")
select reservations.Element("NbrReservation").Value;
如果你把它改为:
var makeInfo = (from reservations in doc.Descendants("Réservations")
select reservations.Element("NbrReservation")).First().Value;
然后你可以这样做:
nbrReservation.Text += s;
这假设NbrReservation
节点保证在XML中。