[英]c# getting data from xml deserialized object
嗨,我在嘗試反序列化xml文件時遇到了一個小問題,
xml文件的內容為:
<?xml version="1.0" encoding="utf-8" ?>
<Settings>
<username>test</username>
<password>test2</password>
</Settings>
而且我已經使用Visual Studio自己的特殊粘貼來制作一個這樣的類:
/// <remarks/>
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
[System.Xml.Serialization.XmlRootAttribute(Namespace="", IsNullable=false)]
public partial class Settings {
private object usernameField;
private object passwordField;
/// <remarks/>
public object username {
get {
return this.usernameField;
}
set {
this.usernameField = value;
}
}
/// <remarks/>
public object password {
get {
return this.passwordField;
}
set {
this.passwordField = value;
}
}
}
但是現在當我嘗試使用以下方法獲取數據時:
s.password.ToString();
我得到的結果是:
System.Xml.XmlNode[]
而不是通緝:測試
我實際上如何使用:
public object username {
get {
return this.usernameField;
}
set {
this.usernameField = value;
}
}
得到我認為是放在里面的字符串返回。
編輯!!!!
我實際上是通過使用以下方法得出的:
XmlNode[] username = (XmlNode[]) s.username;
textBox1.Text = username[0].InnerText;
XmlNode[] password = (XmlNode[])s.password;
textBox2.Text = password[0].InnerText;
但是必須有一種更清潔的方法嗎?
只需將屬性/字段聲明為string
而不是object
:
/// <remarks/>
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
[System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]
public partial class Settings {
private string usernameField;
private string passwordField;
/// <remarks/>
public string username
{
get
{
return this.usernameField;
}
set
{
this.usernameField = value;
}
}
/// <remarks/>
public string password
{
get
{
return this.passwordField;
}
set
{
this.passwordField = value;
}
}
}
.NET序列化不知道在將成員聲明為object
時應該期望什么樣的數據類型,因此它適用於反序列化的最通用選項,即XmlNode
對象的數組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.