我有以下xml
<?xml version="1.0" encoding="utf-8" ?>
<properties>
<entry key="dbname">financedb</entry>
<entry key="username">admin</entry>
<entry key="password">root</entry>
</properties>
我需要有一个函数,我想读取所有三个键值,并使用XMLTextreader读取字符串..尝试了这个,但我现在无能为力。
[WebMethod]
public getConStrings()
{
XmlTextReader reader = new XmlTextReader ("/_layouts/SPCustomWS/zahid.xml");
XmlNodeType type;
while (reader.Read())
{
type = reader.NodeType;
if (type == XmlNodeType.Element)
{
if (reader.Name == "dbname")
return reader.Value;
}
}
}
实际上我想要使用xml,我使用web.config
进行以下操作string ODataSource = ConfigurationManager.AppSettings["OracleDataSource"].ToString();
string OUserID = ConfigurationManager.AppSettings["OracleUserID"].ToString();
string OPassword = ConfigurationManager.AppSettings["OraclePassword"].ToString();
答案 0 :(得分:0)
我肯定使用LINQ to XML:
private static string GetSetting(XDocument doc, string key)
{
return doc.Root
.Elements("entry")
.Single(x => (string) x.Attribute("key") == key)
.Value;
}
...
var document = XDocument.Load("/_layouts/SPCustomWS/zahid.xml");
var dataSource = GetSetting(document, "dbname");
var userName = GetSetting(document, "username");
var password = GetSetting(document, "password");
请注意,Single
如果无法找到您要求的密钥,则会抛出异常。通常这是合适的 - 例如,你不想在没有密码的情况下继续前进。另一种方法是使用SingleOrDefault
并将返回值转换为string
,而不是使用Value
属性:
private static string GetSetting(XDocument doc, string key)
{
return (string) doc.Root
.Elements("entry")
.SingleOrDefault(x => (string) x.Attribute("key") == key);
}
如果找不到您要查找的设置,现在将返回null
。如果有多个条目具有相同的密钥,它仍然会抛出异常 - 这表示配置文件已损坏。