gpt4 book ai didi

c# - 如何从xml文件中读取变量子节点?

转载 作者:太空宇宙 更新时间:2023-11-03 21:38:59 25 4
gpt4 key购买 nike

我需要解析一个包含可变数量节点的 xml 配置文件,而这些节点又包含可变数量的子节点。无论我有多少个 VM 节点或 vmClient 节点,我如何读入所有值?我在这个项目中使用 C# 和 VS2012。顺便说一句,如果有更好的方法在 xml 文件中构建我的数据,请告诉我!这是 xml 文件:

<!--VM settings on ESX Server-->
<VM name="DE2008">
<vmLanguage value = "de"/>
<vmSnapshot value = "test"/>
<vmPowerOn value = "true"/>
<vmClients>
<vmClient name="ITXPPRO">
<vmClientSnapshot value="test2"/>
<vmClientLanguage value="it"/>
</vmClient>
<vmClient name="JPXPPRO">
<vmClientSnapshot value="test3"/>
<vmClientLanguage value="jp"/>
</vmClient>
</vmClients>
</VM>

<VM name="FR2003">
<vmLanguage value = "fr"/>
<vmSnapshot value = "test"/>
<vmPowerOn value = "true"/>
<vmClients>
<vmClient name="DAWIN7">
<vmClientSnapshot value="autotc"/>
<vmClientLanguage value="da"/>
</vmClient>
</vmClients>
</VM>

<!--SQL Servers used as database servers for ePO-->
<sqlServers>
<sqlName value = "DE2008SQL"/>
<sqlLanguage value = "de"/>
<sqlSnapshot value = "sql"/>
</sqlServers>

最佳答案

我建议你使用 LINQ to XML

var xdoc = XDocument.Load(path_to_xml);
var query = from vm in xdoc.Descendants("VM")
select new {
Name = (string)vm.Attribute("name"),
Language = (string)vm.Element("vmLanguage").Attribute("value"),
Snapshot = (string)vm.Element("vmSnapshot").Attribute("value"),
PowerOn = (bool)vm.Element("vmPowerOn").Attribute("value"),
Clients = from c in vm.Element("vmClients").Elements()
select new {
Name = (string)c.Attribute("name"),
// etc
}
};

此外,我建议您将值直接存储为元素值,或存储在属性中,而不是

Language = (string)vm.Element("vmLanguage").Attribute("value")

您将能够使用(如果缺少某些元素,您也不会得到异常)

Language = (string)vm.Element("vmLanguage") // if value stored in element
// or
Language = (string)vm.Attribute("vmLanguage") // if value stored in attribute

前缀 vm 在我看来有点奇怪。如果它是 vm 数据的一部分,为什么不简单地使用 language 呢?所以,我会采用以下配置:

<vm name="DE2008" language="de" shapshot="test" powerOn="true">
<clients>
<client name="ITXPPRO" snapshot="test2" language="it"/>
<client name="ITXPPRO" snapshot="test3" language="jp"/>
</clients>
</vm>

关于c# - 如何从xml文件中读取变量子节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20351000/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com