用于存储信息的简单XML文件

时间:2014-11-26 16:14:58

标签: c# xml linq

我想创建一个简单的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");

2 个答案:

答案 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'
}