Using a XML DataReader

本文关键字:DataReader XML Using | 更新日期: 2023-09-27 18:24:28

我使用SqlDataReaderScenarios表中读取数据,如下所示:

string Data = reader["ScenarioData"].ToString();

但是,现在我的ScenarioData字段是XMLntext。如何使用DataReader读取XML数据?例如,假设我想阅读Url"http://google.com".

场景数据字段:

<Scenario Name="Scenario1" Feature="Feature1">
<Steps>
<Step Url="http://google.com"></Step>
</Steps>
</Scenario>

Using a XML DataReader

鉴于您的XML已经存在于字符串类型的变量中,我建议如下:

SqlDataReader reader= cmd.ExecuteReader();
while (reader.Read())
{
    ..... 
    // you have already an xml string stocked in data
    string data = (string)reader["ScenarioData"];
    // parse it
    var doc = XDocument.Parse(data);
    var step = doc.Descendants("Step").Attributes().FirstOrDefault();
    var url = step != null ? step.Value : String.Empty;
    ......
}

还有一种使用SqlXml读取Xml的方法,您可以在此处找到更多信息

using System.Xml.Linq;
var xml = XElement.Parse(reader["ScenarioData"].ToString());
//assuming there can be multiple <step> elements
var steps = xml.Element("Scenario").Element("Steps").Elements("Step");
var url = steps.First().Attribute("Url").Value;