我想创建一个简单的XML文件来存储一些可以在文本编辑器中轻松更改的设置。这是我的XML文件:
<connection>
<hostname>the.host.name</hostname>
<port>1000</port>
<database>theDbName</database>
</connection>
我正在尝试使用Linq to XML将该信息读入我的程序,但它给了我一个错误:
无法找到源类型“System.Xml.Linq.XElement”的查询模式的实现。 “选择”未找到。
我的代码如下:
XElement root = XElement.Load(".\\Resources\\Connection.xml");
string host = from el in root.Element("hostname") select el.Element("text");
答案 0 :(得分:0)
XDocument xDoc = XDocument.Load(".\\Resources\\Connection.xml");
string host = (string)xDoc.Root.Element("hostname");
答案 1 :(得分:0)
我认为您对XML结构的外观以及使用LinQ读取XML的方式感到困惑。首先将您的connection-element放在名为connections
的根目录中。您的XML现在看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<connections>
<connection>
<hostname>the.host.name</hostname>
<port>1000</port>
<database>theDbName</database>
</connection>
</connections>
现在,您可以选择该根目录下的元素并从中读取所有数据。示例代码如下所示:
var root = XElement.Load(".\\Resources\\Connection.xml");
var connection = root.Elements("connection").FirstOrDefault();
if(connection != null)
{
var host = connection.Element("hostname").Value;
//do something with 'host'
}
<强>更新强>
如果您不想要根元素和连接,可以省略它并使用以下代码来读取XML:
var xmlDoc = XDocument.Load("G:\\Connection.xml");
var connection = xmlDoc.Descendants("connection").FirstOrDefault();
if(connection != null)
{
var host = connection.Element("hostname").Value;
//do something with 'host'
}