首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用c#读取XML文件中带有特定标记的所有数据?

如何使用c#读取XML文件中带有特定标记的所有数据?
EN

Stack Overflow用户
提问于 2017-05-23 00:38:31
回答 2查看 91关注 0票数 1

通过为正在安装的软件创建MD5哈希并将其与验证软件的MD5哈希进行比较,我正在创建一个Windows服务,用于检查系统上安装的软件的完整性。验证的散列包含在如下所示的XML文件中:

代码语言:javascript
运行
复制
<AppList>
<VLC>
<Path>C:Program Files\VLC\VLC.exe</Path>
<MD5GoldenHash> 1f74882b7a5c8a6ca38912df9786c1cc</MD5GoldenHash>
</VLC>
…
</AppList>

如何使用MD5GoldenHash标记读取c#中的所有数据,以便将正在安装的软件的MD5哈希与已验证的哈希进行比较?如有任何帮助或建议,将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-23 19:50:24

我发现我可以读取特定标签的数据,并将其放在如下列表中:

代码语言:javascript
运行
复制
private List<string> getGoldenHashes(string xml)
    {
        List<string> list = new List<string>();
        int i = 0;

        XDocument doc = XDocument.Load(xml);
        var goldHashes = doc.Descendants("MD5GoldenHash");

        foreach (var gh in goldHashes)
        {
            list.Add(gh.Value.ToString());                
        }


        return list;

    }
票数 0
EN

Stack Overflow用户

发布于 2017-05-23 00:52:59

  1. 使用我的答案here创建一个表示您的C#的C#类。
  2. 使用XmlSerializer反序列化XML文件的内容。
  3. 用反序列化的东西做你想做的任何事情。

下面是步骤1将为您生成的类:

代码语言:javascript
运行
复制
/// <remarks/>
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
[System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]
public partial class AppList
{

    private AppListVLC[] vLCField;

    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute("VLC")]
    public AppListVLC[] VLC
    {
        get
        {
            return this.vLCField;
        }
        set
        {
            this.vLCField = value;
        }
    }
}

/// <remarks/>
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class AppListVLC
{

    private string pathField;

    private string mD5GoldenHashField;

    /// <remarks/>
    public string Path
    {
        get
        {
            return this.pathField;
        }
        set
        {
            this.pathField = value;
        }
    }

    /// <remarks/>
    public string MD5GoldenHash
    {
        get
        {
            return this.mD5GoldenHashField;
        }
        set
        {
            this.mD5GoldenHashField = value;
        }
    }
}

下面是如何序列化和反序列化:

代码语言:javascript
运行
复制
public static void Main()
{
    var serializer = new XmlSerializer(typeof(AppList));
    var reader = new StreamReader("YourFile.xml");
    var result = serializer.Deserialize(reader) as AppList;
    reader.Close();
    foreach (var thisVlc in result.VLC)
    {
        Console.WriteLine(thisVlc.MD5GoldenHash);
    }

    // if you want to make changes to xml file then do the following
    result.VLC[0].MD5GoldenHash = "Something to show modificaition";
    serializer.Serialize(new StreamWriter("YourFileOrSomeOtherFile.xml"), result);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44124040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档