使用asp.c#可以获取和编辑xml的特定值吗? 例如,我的xml文件:
<posters>
<poster>
<quantity>100</quantity>
<stock>100</stock>
<price>88</price>
</poster>
<poster>
<quantity>100</quantity>
<stock>150</stock>
<price>95</price>
</poster>
<poster>
<quantity>200</quantity>
<stock>100</stock>
<price>95</price>
</poster>
<poster>
<quantity>200</quantity>
<stock>150</stock>
<price>100</price>
</poster>
</posters>
有两个95s,数量= = 200&amp;股票== 100和数量== 100&amp; stock == 150。 我可以从数量== 200和库存== 100获得值95并编辑它而不从数量== 100&amp; stock == 150修改相同的95?
我尝试使用“SelectSingleNode”和“SelectNode”,但他们无法帮助我。 我想得到像sql这样的结果 - “从海报中选择价格= 200和库存= 100的价格。”
有什么建议吗?
Xml到数据集:
string xmlDocString = Server.MapPath("MyXMLFile.xml");
DataSet dataSet = new DataSet();
dataSet.ReadXml(xmlDocString);
GridView1.DataSource = dataSet.Tables[0].DefaultView;
GridView1.DataBind();
答案 0 :(得分:1)
使用XPath表达式和this XML Library:
int quantity = 200;
int stock = 100;
int newPrice = 55;
XElement root = XElement.Load(file);
XElement poster = root.XPathElement("//poster[quantity={0} and stock={1}]",
quantity, stock);
poster.Set("price", newPrice, false); // false for set child ELEMENT value
答案 1 :(得分:0)
您可以使用LINQ to XML。它将允许您拥有代码“like sql”
以下是您在LINQPad中运行的代码示例
void Main()
{
var xml = @"<posters>
<poster>
<quantity>100</quantity>
<stock>100</stock>
<price>88</price>
</poster>
<poster>
<quantity>100</quantity>
<stock>150</stock>
<price>95</price>
</poster>
<poster>
<quantity>200</quantity>
<stock>100</stock>
<price>95</price>
</poster>
<poster>
<quantity>200</quantity>
<stock>150</stock>
<price>100</price>
</poster>
</posters>";
var doc = XDocument.Parse(xml);
var value = (from x in doc.Descendants("poster")
where x.Element("stock").Value == "100"
&& x.Element("quantity").Value == "200"
select x.Element("price")).FirstOrDefault();
if (value != null)
value.SetValue("1000");
value.Dump();
doc.Dump();
}