将计算机从 xml 文件 c# 移动到具有读/写功能的字典

本文关键字:功能 字典 计算机 xml 文件 移动 | 更新日期: 2024-10-30 10:48:34

>我正在编写一个应用程序,该应用程序将作为服务运行,并每小时检查一次计算机以查看它们是否启动。 我有一个 ComputerList.xml 文件,我将读取和写入该文件。XML 文件的格式为

<computers>
  <PrimaryServers>
    <Location1 type="primary">
       <ipaddress>192.168.1.2</ipaddress>
       <isAlive>true</ipaddress>
    </Location1>
    <location2></location2>
  </PrimaryServers>
  <SecondaryServers>
     <location1 type="secondary">
        <ipaddress></ipaddress>
        etc...
     </location1>
  </SecondaryServers>
  <clients>
     etc... <type="client">
  </clients>
</computers>

每个位置都有不同数量的计算机,我想存储这些值以用于其他方法,并在检查主机后是否处于活动状态,将布尔值写回文件。

这个应用程序的想法是检查主服务器是否处于活动状态,如果不是,它会检查客户端是否处于活动状态,如果它们已关闭,那么

我知道站点之间的网络已关闭并且什么都不做,如果只是服务器关闭,那么它会将主机文件推送到处于活动状态的客户端, 将流量重定向到辅助服务器。 我会使用故障转移群集,但服务器上的 LOB 应用程序不允许这样做。

我正在寻找的只是一种读取 xml 文件的方法,区分主文件、辅助文件和客户端,检索值并将其存储在字典中。 我已经编写了代码以查看它是否处于活动状态,这将返回每个设备的 IsAlive 状态,我只需要将其写入 xml 中,以便在服务器重新启动时拥有持久数据。 没有足够的计算机来证明数据库的合理性。

提前谢谢。

将计算机从 xml 文件 c# 移动到具有读/写功能的字典

可以使用XmlDocument类来读取和保存 XML 文档。它在System.Xml.

在这里阅读更多关于它的信息:

https://msdn.microsoft.com/en-us/library/system.xml.xmldocument%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396

试试这样的事情

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Dictionary<string, Computer> dict = new Dictionary<string, Computer>();
            string xml =
                    "<Computers>" +
                      "<PrimaryServers>" +
                        "<Location1 type='"primary'">" +
                          "<Ipaddress>192.168.1.2</Ipaddress>" +
                          "<IsAlive>true</IsAlive>" +
                        "</Location1>" +
                        "<Location2></Location2>" +
                      "</PrimaryServers>" +
                      "<SecondaryServers>" +
                        "<Location1 type='"secondary'">" +
                          "<Ipaddress>192.168.1.3</Ipaddress>etc..." +
                        "</Location1>" +
                      "</SecondaryServers>" +
                      "<Clients>" +
                        "<Location1 type='"secondary'">" +
                          "<Ipaddress>192.168.1.4</Ipaddress>etc..." +
                        "</Location1>" +
                      "</Clients>" +
                    "</Computers>";
            XDocument doc = XDocument.Parse(xml);
            List<XElement> computers = doc.Descendants("Computers").Elements().ToList();
            foreach (XElement computer in computers)
            {
                dict.Add((string)computer.Descendants("Ipaddress").FirstOrDefault(), new Computer()
                {
                    ip = (string)computer.Descendants("Ipaddress").FirstOrDefault(),
                    type = (string)computer.Descendants("Location1").FirstOrDefault().Attribute("type")
                });
            }
        }
    }
    public class Computer
    {
        public string ip { get; set; }
        public string location1 { get; set; }
        public string location2 { get; set; }
        public string type { get; set; }
    }
}