0

我有一个 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 的值吗?

我怎样才能改变这个值?

4

3 回答 3

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;
}
于 2012-11-23T23:09:08.143 回答
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);
于 2012-11-23T23:09:16.517 回答
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 中。

于 2012-11-23T23:23:22.933 回答