C# 使用C选择并更新XML文件中的值
我有一个XML文件:C# 使用C选择并更新XML文件中的值,c#,xml,linq-to-xml,C#,Xml,Linq To Xml,我有一个XML文件: <?xml version="1.0" encoding="utf-8"?> <Options> <Gestion> <Prêts> <NbrRenouvlement>5</NbrRenouvlement> <DureeEmprunt>10</DureeEmprunt> <NbrEmprunt>3</NbrEmpr
<?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>
但这段代码返回一个通用列表,尽管我想要选择的值只有一个数字,所以我需要使用foreach循环:
foreach (string s in makeInfo.Distinct())
nbrReservation.Text += s;
这个方法工作得很好,但是选择一个值太长了,有没有其他方法允许我从XML文件中选择NBR的值
我怎样才能改变这个值呢
我想选择NBRENOUVLENT的值
您可以使用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;
}
我想选择NBRENOUVLENT的值
您可以使用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;
}
读取和保存值:
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);
读取和保存值:
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);
这将为您提供字符串IEnumerable的列表: 如果您将其改写为:
var makeInfo = (from reservations in doc.Descendants("Réservations")
select reservations.Element("NbrReservation")).First().Value;
然后你可以这样做:
nbrReservation.Text += s;
这是假设保留节点保证位于XML中。这将为您提供字符串IEnumerable的列表: 如果您将其改写为:
var makeInfo = (from reservations in doc.Descendants("Réservations")
select reservations.Element("NbrReservation")).First().Value;
然后你可以这样做:
nbrReservation.Text += s;
这是假设NBR保留节点保证位于XML中。NBRRenOuvElement的值可以是changed@SuSha那个么为什么你们要求nBreNouvlement的值是5呢?请参阅我在回答顶部的引用,因为在示例中,我给出了NBRRenOuvElement的值为5,但该值可以为changed@SuSha因此,您想按名称而不是值获取此节点吗?NBRENOUVLENT的值可以是changed@SuSha那个么为什么你们要求nBreNouvlement的值是5呢?请参阅我在回答顶部的引用,因为在示例中,我给出了NBRRenOuvElement的值为5,但该值可以为changed@SuSha那么您想通过名称而不是值来获取这个节点吗?我有一个问题:XDocument.Parsexml;我应该通过xml文件的路径或XDocument更改参数xml。LoadfilePathParse用于从字符串变量加载xml。如果您从文件加载xml,请使用LoadI。我尝试了此代码,但没有成功,它返回一个空值string@SuSha你试了什么?因为我在发布之前测试过它,它可以正常工作。请发布您的代码。对不起,这是我的错,我错过了一个casting我有一个问题:XDocument.Parsexml;我应该通过xml文件的路径或XDocument更改参数xml。LoadfilePathParse用于从字符串变量加载xml。如果您从文件加载xml,请使用LoadI。我尝试了此代码,但没有成功,它返回一个空值string@SuSha你试了什么?因为我在发布之前测试过它,它可以正常工作。请发布您的代码。很抱歉,这是我的错误,我错过了一个casting。您想获取NbreNuvElement的值,但您的代码尝试获取Réservations/NbreReservation的值。你能澄清一下你真正想要做什么吗?我想要以字符串的形式获取值,而不是IEnumerableSu Sha,你想要获取的是什么Nbreuvlement,而你的代码正在做的是矛盾的。你正在选择Réservations/NbrReservation。你想要获取Nbreuvlement的值,但你的代码试图获取Réservations/NbrReservation的值。你能澄清一下你真正想做什么吗?我想把值作为一个字符串而不是一个IEnumerableSu Sha来获取,你想得到的是什么,你的代码做的是矛盾的,你选择的是保留/NBR保留。