[英]How to Read and Edit XML Nodes
我對所有這些都相當新,並且很難找到答案,所以任何正確方向的指針都會很棒。
我有一個我無法控制的系統的XML文件,它產生如下:
<?xml version="1.0" ?>
<WatchConfig>
<ProcessList>
<Process>
<RunOnDesktop>0</RunOnDesktop>
<DaysToKeepBackup>10</DaysToKeepBackup>
<Scheduler>
<Active>-1</Active>
<Startup>0</Startup>
<SelfRepl>0</SelfRepl>
<MaxPercent>0</MaxPercent>
<Delay>4</Delay>
<AsSoon>-1</AsSoon>
<OneTime>0</OneTime>
<Period>0</Period>
<Week>1</Week>
<Interval>2</Interval>
</Scheduler>
<UniqueName>0ZISFZL6O6S5001</UniqueName>
<Name>Process1</Name>
<Group/>
<MetaFileName/>
</Process>
<Process>
<RunOnDesktop>0</RunOnDesktop>
<DaysToKeepBackup>10</DaysToKeepBackup>
<Scheduler>
<Active>0</Active>
<Startup>0</Startup>
<SelfRepl>0</SelfRepl>
<MaxPercent>20</MaxPercent>
<Delay>4</Delay>
<AsSoon>-1</AsSoon>
<OneTime>0</OneTime>
<Period>0</Period>
<Week>1</Week>
<Interval>2</Interval>
</Scheduler>
<UniqueName>00ZJENPXPX1KL07</UniqueName>
<Name>Process2</Name>
<Group/>
<MetaFileName/>
</Process>
</ProcessList>
</WatchConfig>
我希望能夠做的是閱讀這個並修改Scheduler節點下的Active值,理想情況下能夠指定我想要修改的進程的名稱。(在這個例子中有兩個)
最簡單的XLinq:
var doc = XDocument.Load(fileName);
var p = doc.Descendants("Process")
.Where(e => e.Element("UniqueName").Value == procName )
.Single();
var a = p.Element("Scheduler").Element("Active");
a.Value = "+1";
doc.Save(outFileName);
也許你可以試試像LINQ這樣的東西
你可以這樣做來加載XML
using System;
using System.Collections.Generic;
using System.Linq;
using System.Xml.Linq;
public class EmployeeServices
{
XElement _empXml = XElement.Load(@"employees.xml");
}
//然后查詢信息你可以做到這一點
public List<string> GetDepartments()
{
//query the XML and group by department
// select only the departments in the group
var deptQuery =
from emp in _empXml.Descendants("Employee")
group emp by emp.Element("Department").Value
into empGroup
select empGroup.First().Element("Department").Value;
return deptQuery.ToList();
}
這是MCTS書中的一個例子,希望它有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.