如何根据条件批量修改xml文件中的内容

shbaby008 2010-11-11 04:50:15
xml示例:
<DocumentElement>
<xlsTab>
<Field0>0001</Field0>
<Field1>AA</Field2>
<Field2>2010-09-01</Field1>
</xlsTab>
<xlsTab>
<Field0>0001</Field0>
<Field1>BB</Field2>
<Field2>2010-09-02</Field1>
</xlsTab>
<xlsTab>
<Field0>0001</Field0>
<Field1>CC</Field2>
<Field2>2010-09-03</Field1>
</xlsTab>
<xlsTab>
<Field0>0001</Field0>
<Field1>DD</Field2>
<Field2>2010-09-04</Field1>
</xlsTab>
</DocumentElement>


如何修改 Field2的日期2010-09-02到2010-09-03之间记录,将其Field1的值全修改"XX"
结果示例如下:
如何根据条件批量修改xml文件中的内容
<DocumentElement>
<xlsTab>
<Field0>0001</Field0>
<Field1>AA</Field2>
<Field2>2010-09-01</Field1>
</xlsTab>
<xlsTab>
<Field0>0001</Field0>
<Field1>XX</Field2>
<Field2>2010-09-02</Field1>
</xlsTab>
<xlsTab>
<Field0>0001</Field0>
<Field1>XX</Field2>
<Field2>2010-09-03</Field1>
</xlsTab>
<xlsTab>
<Field0>0001</Field0>
<Field1>DD</Field2>
<Field2>2010-09-04</Field1>
</xlsTab>
</DocumentElement>
...全文
577 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
遊戲王千金 2010-11-11
  • 打赏
  • 举报
回复
这句写错 string Fileld2=Convert.ToDateTime(elemList2[0].InnerXml);
因把Fileld2定义为DateTime类型。


遊戲王千金 2010-11-11
  • 打赏
  • 举报
回复

public static void ChangeChildElement(string fileName, string rootElement, string FindName, string SearchVal,string SearchVal2 string NewValue)
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(fileName);
XmlNodeList nodeList = xmlDoc.SelectSingleNode(rootElement).ChildNodes;
bool flag = false;
foreach (var node in nodeList)
{
XmlElement el=(XmlElement)node;
XmlNodeList elemList = el.GetElementsByTagName(FindName);
XmlNodeList elemList2 = el.GetElementsByTagName("Field2");
string Fileld2=Convert.ToDateTime(elemList2[0].InnerXml);
if (Fileld2>=Convert.ToDateTime(SearchVal) && Fileld2<=Convert.ToDateTime(SearchVal2))
{
flag = true;
elemList[0].InnerXml = NewValue;
}
}
if(flag)
xmlDoc.Save(fileName);
}


调用
string xml = Server.MapPath("test.xml");
ChangeChildElement(xml, "DocumentElement", "Field1", "2010-09-02","2010-09-03", "XX");
_Will_ 2010-11-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 pxxxp 的回复:]
C# code
XDocument Doc = XDocument.Load("c:\\test.xml");
var query=from X in Doc.Descendants("User")
let Fileld2=Convert.ToDateTime(X.Element("Field2").……
[/Quote]

改成

var query=from X in Doc.Descendants("xlsTab")


而且楼主的XML格式不对
孟子E章 2010-11-11
  • 打赏
  • 举报
回复
SelectNodes()方法得到集合。然后遍历处理
PxxxP 2010-11-11
  • 打赏
  • 举报
回复
            XDocument Doc = XDocument.Load("c:\\test.xml");
var query=from X in Doc.Descendants("User")
let Fileld2=Convert.ToDateTime(X.Element("Field2").Value)
where Fileld2>=Convert.ToDateTime("2010-09-02") && Fileld2<=Convert.ToDateTime("2010-09-03")
select X;
foreach (var v in query)
{
v.Element("Field1").Value = "xxxxxx";
}
Doc.Save("c:\\test.xml");

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧