我的XML文件结构
<items>
<item>
<itemID>1</itemID>
<isGadget>True</isGadget>
<name>Star Wars Figures</name>
<text1>LukeSkywalker</text1>
</item>
</items>
Run Code Online (Sandbox Code Playgroud)
通过ITEMID从XML读取数据
XDocument xmlDoc = XDocument.Load(HttpContext.Current.Server.MapPath("data.xml"));
var items = from item in xmlDoc.Descendants("item")
where item.Element("itemID").Value == itemID
select new
{
itemID = item.Element("itemID").Value,
isGadget = bool.Parse(item.Element("isGadget").Value),
name = item.Element("name").Value,
text1 = item.Element("text1").Value,
}
foreach (var item in items)
{
....
}
Run Code Online (Sandbox Code Playgroud)
如何按itemID更新XML数据?谢谢!
Can*_*var 19
要更新xml,请使用XElement的SetElementValue方法:
var items = from item in xmlDoc.Descendants("item")
where item.Element("itemID").Value == itemID
select item;
foreach (XElement itemElement in items)
{
itemElement.SetElementValue("name", "Lord of the Rings Figures");
}
Run Code Online (Sandbox Code Playgroud)
编辑:是的,我尝试了你的例子,它将更新的数据保存到文件中.使用XDocument的Save方法保存更新的xml ,这是我尝试的代码:
string xml = @"<items>
<item>
<itemID>1</itemID>
<isGadget>True</isGadget>
<name>Star Wars Figures</name>
<text1>LukeSkywalker</text1>
</item>
</items>";
XDocument xmlDoc = XDocument.Parse(xml);
var items = from item in xmlDoc.Descendants("item")
where item.Element("itemID").Value == "1"
select item;
foreach (XElement itemElement in items)
{
itemElement.SetElementValue("name", "Lord of the Rings Figures");
}
xmlDoc.Save("data.xml");
Run Code Online (Sandbox Code Playgroud)
要更新XElement的xml use element方法,请执行以下操作:
XDocument xmlDoc = XDocument.Load(HttpContext.Current.Server.MapPath("data.xml"));
var items = (from item in xmlDoc.Descendants("item")
where item.Element("itemID").Value == itemID
select item).ToList();
foreach (var item in items)
{
item.Element("itemID").Value=NewValue;
bool.Parse(item.Element("isGadget").Value)=Newvalue;
item.Element("name").Value=Newvalue;
item.Element("text1").Value=Newvalue;
}
xmlDoc.Save(HttpContext.Current.Server.MapPath("data.xml"));
Run Code Online (Sandbox Code Playgroud)
要么
XDocument xmlDoc = XDocument.Load(HttpContext.Current.Server.MapPath("data.xml"));
foreach (var item in (from item in xmlDoc.Descendants("item")
where item.Element("itemID").Value == itemID
select item).ToList())
{
item.Element("itemID").Value=NewValue;
bool.Parse(item.Element("isGadget").Value)=Newvalue;
item.Element("name").Value=Newvalue;
item.Element("text1").Value=Newvalue;
}
xmlDoc.Save(HttpContext.Current.Server.MapPath("data.xml"));
Run Code Online (Sandbox Code Playgroud)
您可以获得动态信息并在按钮单击事件中更新这些更改,首先检查代码存在时的页面加载
if(!Page.IsPostBack) { .... }
Run Code Online (Sandbox Code Playgroud)
您的查询正在投射到匿名类型。如果您只想修改元素本身,您需要类似以下内容:
var items = from item in xmlDoc.Descendants("item")
where item.Element("itemID").Value == itemID
select item;
Run Code Online (Sandbox Code Playgroud)
也称为:
var items = xmlDoc.Descendants("item")
.Where(item => item.Element("itemID").Value == itemID);
Run Code Online (Sandbox Code Playgroud)
ToList()我建议您也调用,以便在开始修改之前执行整个查询并将结果存储在列表中:
var items = xmlDoc.Descendants("item")
.Where(item => item.Element("itemID").Value == itemID)
.ToList();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
38795 次 |
| 最近记录: |