2012-10-03 109 views
1

我對這一切都很陌生,並且很難找到答案,所以任何指向正確方向的指針都會很棒。如何閱讀和編輯XML節點

我有,我在沒有控制的系統中的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> 

我想做什麼就能做的是通過這個來讀取和修改活動調度節點下的價值,最好能指定我想修改進程的名稱(因爲在這個例子中是兩個)

+1

watchconfig是一個錯字沒有endtag?否則,這是無效的xml,不能用解析器讀取 –

+1

新用戶,編輯帖子以顯示標籤(最初在那裏)。 –

+0

對不起 - 是的是一個錯字....並感謝埃裏克。 – user1176737

回答

3

最容易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); 
+0

感謝這個亨克,我現在就給它一個去吧...... – user1176737

1

也許你可以嘗試的東西像LINQ

U可以做到這一點加載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書中拿走,希望它有幫助。

+0

謝謝羅恰,我可以問一下這是哪本MCTS書嗎? – user1176737

+0

使用MS .Net FW 4.0開發Web應用程序。 MCTS 70-515。谷歌它我找到了PDF。搜索第10章,我認爲,與linq合作 – rocha