检索XML节点属性和值

时间:2016-06-29 13:38:10

标签: c# xml

对于熟悉在C#

中解析XML的人来说,这是一个快速的解决方案

我有一个XML文件,如下所示;

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral >
        <section name="Proxy.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral />
        </sectionGroup>
    </configSections>
    <applicationSettings>
        <Proxy.Properties.Settings>
            <setting name="MaxLogs" serializeAs="String">
                <value>10</value>
            </setting>
            <setting name="MaxArchives" serializeAs="String">
                <value>3</value>
            </setting>
            <setting name="IpAddress" serializeAs="String">
                <value>COMPUTER2</value>
            </setting>
            <setting name="Port" serializeAs="String">
                <value>4050</value>
            </setting>
            <setting name="Index" serializeAs="String">
                <value>0</value>
            </setting>
        </Proxy.Properties.Settings>
    </applicationSettings>
</configuration>

我只想读取属性,并解析名称,例如&#34; Port&#34;但也检索值集,在这种情况下&#34; 4050&#34;。

我有一小段代码将节点返回到控制台输出;

string path = "C:\\Path\\To\\XML.exe.config";

XDocument xdoc = new XDocument();
xdoc = XDocument.Load(path);

var jproxy = xdoc.DescendantNodes();

foreach (var dn in jproxy)
{
    Console.WriteLine(dn.NextNode);
}

Console.ReadLine();

还有一个我认为可以方便地存储结果列表的小班;

public class Proxy
{
    public string MaxLogs { get; set; }
    public string MaxArchives { get; set; }
    public string IPAddress { get; set; }
    public string Port { get; set; }
    public string Index { get; set; }

}

声明:

我已经研究过这里和其他网站上提供的大多数解决方案,但目前还没有点击给我。我知道它比我想象的容易,你可以使用XPath,Linq等,但是对这个特殊问题的任何帮助都将非常感激。

如果您对我将来使用XML的最佳途径有任何建议,我也可以提出建议,因为这是我过去一直在努力解决的问题,例如使用Linq或XPath或所有他们?

干杯

1 个答案:

答案 0 :(得分:1)

这样的东西会给你KeyValuePair列表中的所有数据。要填写你提供的课程,你要么必须使用反射或swtich / case,没有其他我能想到的更通用的东西:

SupportMapFragment mapFragment = (SupportMapFragment) getFragmentManager().findFragmentById(R.id.map);
mapFragment.getMapAsync(new OnMapReadyCallback() {
编辑:我一直使用LINQ来操作和查询XML文档(类似于上面的代码),你也可以使用XPath,它涵盖了我需要的所有场景。