1

私はこれらすべてにかなり慣れておらず、答えを見つけるのに苦労しているので、正しい方向へのポインタは素晴らしいでしょう。

制御できないシステムからの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>

私ができるようにしたいのは、これを読み通して、スケジューラノードの下のアクティブ値を修正することです。理想的には、修正したいプロセスの名前を指定できます(この例では2つあります)。

4

2 に答える 2

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);
于 2012-10-03T18:06:27.967 に答える
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 の本から取った例です。

于 2012-10-03T18:07:08.370 に答える