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>

5 である NbrRenouvlement の値を選択したいのですが、これは私が書いたコードです。

String nbrReservation = String.Empty;
var makeInfo = from reservations in doc.Descendants("Réservations") 
           select reservations.Element("NbrReservation").Value;

しかし、このコードはジェネリック リストを返します。選択したい値が 1 つの数値であるにもかかわらず、foreach ループを使用する必要があります。

foreach (string s in makeInfo.Distinct()) 
               nbrReservation.Text += s;

このメソッドは正常に機能しますが、1 つの値を選択するには長すぎます。その 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

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 に答える
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 に答える