从XML文件中读取连接字符串

时间:2015-05-19 15:09:16

标签: c# xml

我已经阅读了有关如何从XML文件中读取的所有信息,但我无法完成任何工作。我想从XML文件中读取一个简单而简单的连接字符串,仅此而已。

我的XML看起来像

<?xml version="1.0" standalone="yes"?>
<connectionString>  
    <conn>"adsf"</conn>
</connectionString>

我用

尝试过varios方式
XmlDocument doc = new XmlDocument();
XmlTextReader reader = new XmlTextReader(xmlLoc);

while (reader.MoveToNextAttribute())
{
    XmlNode a = doc.ReadNode(reader);
    textBox1.Text = Text + a.Name;
}

XmlDocument xml = new XmlDocument();
xml.LoadXml(xmlLoc); //myXmlString is the xml file in string //copying xml to string: string myXmlString = xmldoc.OuterXml.ToString();
XmlNodeList xnList = xml.SelectNodes("/connectionString");

foreach (XmlNode xn in xnList)
{
    XmlNode example = xn.SelectSingleNode("conn");

    if (example != null)
    {
        string na = example["Name"].InnerText;
        string no = example["NO"].InnerText;
    }
}

我错过了什么,我不确定是什么,这应该是一个非常简单的任务,但我无法完成它。有什么帮助吗?

我正在尝试在WIndows表单应用程序中执行此操作。

4 个答案:

答案 0 :(得分:6)

  

我错过了什么?

是。 .NET有一个用于存储连接字符串的内置机制,在App.config文件中,没有理由手动存储它并自己解析它。

右键单击您的项目,转到添加 - &gt;新物品

然后,添加一个&#34;应用程序配置文件&#34;:

Application Configuration File

打开后,向其添加connectionStrings节点,如下所示:

// This is an example of a connectionString node. You may add child
// values to it as follows
<connectionStrings>
  <add name="YourConnectionStringKey" 
             providerName="System.Data.SqlClient"
             connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=YourDB;Trusted_Connection=Yes" />
</connectionStrings>

然后,您可以使用ConfigurationManager.ConnectionStrings访问它:

string connectionString = 
                ConfigurationManager.ConnectionStrings["YourConnectionStringKey"].ConnectionString;

答案 1 :(得分:2)

您可以使用linq to xml。

var xmlStr = File.ReadAllText("fileName.xml");


var str = XElement.Parse(xmlStr);

var result = str.Elements("word").
Where(x => x.Element("connectionString").Value.Equals("conn"));

Console.WriteLine(result);

这可能有用(或者可能需要进行一些更改。

答案 2 :(得分:0)

DateTime stDate =  dt.AsEnumerable()
    .Max(r => DateTime.ParseExact(r.Field<string>("date"), 
                                    "MM/dd/yyyy", 
                                    CultureInfo.InvariantCulture)); 

答案 3 :(得分:0)

If you still have not found your answer then try this (a bit old school but it worked for me)

public class Common
    {
        public Common()
        {
        }
//      public static string GetXML()
//      {
//          return @"C:\MyLocation\Connections.xml";
//      }
        public static string GetXMLconn(string strConn)
        {
            string xmlConStr = "";
            //
            string XMLconn = @"C:\Mylocation\Connections.xml"; 

            // Get the Connection String from the XML file.
            XmlTextReader textReader  = new XmlTextReader(XMLconn);
            textReader.Read();
            while (textReader.Read())
            {
                // Read the currect element in the loop
                textReader.MoveToElement();
                // If the element name is correct then read and assign the connection string
                if (textReader.Name == strConn)
                {
                    xmlConStr = textReader.ReadString();
                }
            }
            textReader.Close();

            return xmlConStr;

        }

}