我有一个名称空间Common.Param
,其中我创建了一堆简单的静态字符串类,如下所示:
public class Url
{
public static string LoginPage;
public static string AdminPage;
public static string ProfilePage;
}
public class LoginDetails
{
public static string Username;
public static string Password;
}
我想用这样的xml文件填充这些字段
<Param>
<Url>
<LoginPage>http://1.2.3.4/Login.aspx</LoginPage>
<AdminPage>http://1.2.3.4/Admin.aspx</AdminPage>
<ProfilePage>http://1.2.3.4/Profile.aspx</ProfilePage>
</Url>
<LoginDetails>
<Username>myUser</Username>
<Password>p4ssw0rd</Password>
</LoginDetails>
...
</Param>
如何找到Common.Param
命名空间中的所有类并以编程方式填充其字符串?
答案 0 :(得分:3)
当然你可以这样做:
var xdoc = XDocument.Load(path_to_xml);
var url = xdoc.Root.Element("Url");
Url.LoginPage = (string)url.Element("LoginPage");
Url.AdminPage = (string)url.Element("AdminPage");
Url.ProfilePage = (string)url.Element("ProfilePage");
var login = xdoc.Root.Element("LoginDetails");
LoginDetails.Username = (string)login.Element("Username");
LoginDetails.Password = (string)login.Element("Password");
但正如@Tarion正确指出的那样,我会选择非静态数据。静态数据引入了与系统的耦合。此外,您将无法对静态数据使用xml序列化。
因此,xml中的元素名称与类的成员匹配,然后反序列化将非常简单。只需创建包含Param
和Url
的<{1}}类:
LoginDetails
反序列化:
public class Param
{
public Url Url { get; set; }
public LoginDetails LoginDetails { get; set; }
}
public class Url
{
public string LoginPage { get; set; }
public string AdminPage { get; set; }
public string ProfilePage { get; set; }
}
public class LoginDetails
{
public string Username { get; set; }
public string Password { get; set; }
}
答案 1 :(得分:1)
您正在寻找的一般事项是“序列化”/“反序列化”。
有很多非常称职的图书馆。试试看这里