2011-08-17 40 views
0

这里我的代码至今:获取值了XML文件

public Form1() 
{ 
    InitializeComponent(); 

    Configuration cfg = Configuration.Deserialize("config.xml"); 
    textBox1.Text = cfg.warning.ToString(); 
} 

下面是配置类:

public class Configuration 
{ 
    int _warning; 
    int _alert; 

    public Configuration() 
    { 
    // _warning = 50; 
    // _alert = 100; 
    } 

    public static void Serialize(string file, Configuration c) 
    { 
     XmlSerializer xs = new XmlSerializer(c.GetType()); 
     StreamWriter writer = File.CreateText(file); 
     xs.Serialize(writer, c); 
     writer.Flush(); 
     writer.Close(); 
    } 

    public static Configuration Deserialize(string file) 
    { 
     XmlSerializer xs = new XmlSerializer(typeof(Configuration)); 
     StreamReader reader = File.OpenText(file); 
     Configuration cfg = (Configuration)xs.Deserialize(reader); 
     reader.Close(); 
     return cfg; 
    } 

    public int warning 
    { 
     get { return _warning; } 
     set { _warning = value; } 
    } 

    public int alert 
    { 
     get { return _alert; } 
     set { _alert = value; } 
    } 

而这里的​​3210文件:

<Sensors> 
    <ID1> 
    <warning>70</warning> 
    <alert>100</alert> 
    </ID1> 
    <ID2> 
    <warning>80</warning> 
    <alert>110</alert> 
    </ID2> 
</Sensors> 

所以我怎么才能从XML文件中获取正确的数据?现在,我总是得到 “0”

感谢

+2

是没有任何理由的反序列化的XML?请注意,序列化或其他方式是非常昂贵的。为什么不把它加载到XMLDocument? – Zenwalker

回答

1

用途:

System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument(); 
xmlDoc.Load(filename); 

string sWarningValue = xmlDoc["Sensors"]["ID1"]["warning"].Value; 

没有实际编译这段代码,但它应该为你工作。

0

这可能会实现:

var xdoc = XDocument.Load(pathToFile); 
var warningValue = xdoc.Element("warning").Value;