0

この XML ファイルを編集するにはどうすればよいですか。

 <?xml version="1.0" encoding="utf-8" ?>
<employees>
  <employee id="657434365436543" name="Joe Bloggs" group="Manager" subgroup="Deputy">
    <contactDetails>
      <homePhone>6535436543</homePhone>
      <mobilePhone>654365436543</mobilePhone>
    </contactDetails>
    <personelFile>
      <rightToWork>
        <type>Permanent</type>
        <expires>Never</expires>
      </rightToWork>
      <nationalInsurance>6543655543</nationalInsurance>
      <startDate>01/09/2009</startDate>
    </personelFile>
    <holidays>
      <entitlements>
        <holidays>22</holidays>
        <bankHolidays>8</bankHolidays>
        <personalDays>1</personalDays>
      </entitlements>
      <taken>
        <holidays>1</holidays>
        <bankHolidays>0</bankHolidays>
        <personalDays>0</personalDays>
      </taken>
      <remaining>
        <holidays>21</holidays>
        <bankHolidays>8</bankHolidays>
        <personalDays>1</personalDays>
      </remaining>
      <booked>
        <holidays>22</holidays>
        <bankHolidays>8</bankHolidays>
        <personalDays>1</personalDays>
      </booked>
      <remainingtobook>
        <holidays>0</holidays>
        <bankHolidays>0</bankHolidays>
        <personalDays>0</personalDays>
      </remainingtobook>
    </holidays>
    <shifts>
      <monday>
        <start>0800</start>
        <end>1300</end>
      </monday>
      <tuesday>
        <start>0800</start>
        <end>1300</end>
      </tuesday>
      <wednesday>
        <start>0800</start>
        <end>1300</end>
      </wednesday>
      <thursday>
        <start></start>
        <end></end>
      </thursday>
      <friday>
        <start>0800</start>
        <end>1300</end>
      </friday>
      <saturday>
        <start>0800</start>
        <end>1200</end>
      </saturday>
      <sunday>
        <start></start>
        <end></end>
      </sunday>
    </shifts>  
  </employee>
</employees>

これまでのところ、XML から正しい従業員を選択するために次の手順を実行しています。

XmlTextReader employeesReader = new XmlTextReader("Employees.xml");
            var employeesXdoc = XDocument.Load(employeesReader);

            var employees = from employee in employeesXdoc.Descendants("employee")
                            where employee.Attribute("id").Value.ToString() == employeeSelect.Value.ToString()
                            select new
                        {
                            nodes =  employee.Nodes()
                        };

            foreach (var employee in employees)
            {
                // WHAT TO PUT HERE?
            }

ファイルの編集を挿入する適切な場所を見つけたと思いますが、それを正しく編集して、そこに含まれる他のすべてを失うことなくファイルに保存する方法を知る必要があります(そうでない場合は、ファイル全体。

助けてくれてありがとう。

4

2 に答える 2

2

xml-serializer-class を使用することもお勧めします。

そこで、通常のオブジェクトを操作して、後でxmlに保存できます:)

http://msdn.microsoft.com/en-us/library/ms733901.aspx

于 2012-09-10T19:01:58.340 に答える
1

保存するたびに全体を書き換えずに XML ファイルを更新するための便利なリンクを次に示します: http://support.microsoft.com/kb/301233

一般的な考え方は、XMLTextReader の代わりに XMLDocument を使用し、.xml ファイルを XMLDocument オブジェクトにロードすることです。次に、ルート ノードを取得して、ナビゲート/クエリを開始します。編集したいノードが見つかったら、変更を加えます。完了したら、XMLDocument.Save(path) を使用して変更を保存します。

IO ストリームは一方向現象であるため、既存のファイルを上書きする場合を除き、リーダー/ライターは使用できません。

于 2012-09-10T18:14:42.240 に答える