从C#中的XML数据库字符串中获取XML值

时间:2012-10-30 12:56:31

标签: c# xml xpath linq-to-xml

我正在尝试获取存储在我的数据库中的xml片段的值,但似乎无法使其正常工作。他们都回来了...... xml看起来像这样:

<fields>
<field id="EmployeeID">1002240002</field>
<field id="JobType">Web Manager</field>
<field id="CompanyCode">R6297C</field>
</fields>

我的代码,下面是数据库中的字符串。

string xml = "<fields><field id=\"EmployeeID\">1002240002</field><field id=\"JobType\">Web Manager</field><field id=\"CompanyCode\"> R6297C </field></fields>";

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(xml);

var n = xmlDoc.GetElementById("EmployeeID ");

                if (n != null)
                { 
                    var employeeId = xmlDoc.GetElementById("EmployeeID ").InnerText;
                }

对此有何帮助?我知道我在这里很容易丢失一些东西......谢谢!

1 个答案:

答案 0 :(得分:2)

您可以使用以下XPath查询

string xpath = "field[@id='EmployeeID']";
XmlNode fieldNode = xmlDoc.DocumentElement.SelectSingleNode(xpath);
var id = Int32.Parse(fieldNode.InnerText);

或Linq to Xml

var id = (from f in xdoc.Descendants()
          where (string)f.Attribute("id") == "EmployeeID"
          select (int)f).Single();

或使用流畅的界面

var id = xdoc.Descendants()
             .Where(f => (string)f.Attribute("id") == "EmployeeID")
             .Select(f => (int)f)
             .Single();

BTW xdoc是XDocument类的实例:

var xdoc = new XDocument(xml);