2

データベースに保存されている xml スニペットの値を取得しようとしていますが、うまくいかないようです。それらはすべてnullに戻ってきます... 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;
                }

これについて何か助けはありますか?ここで何か簡単なことを見逃していることはわかっています...ありがとう!

4

1 に答える 1

2

次の XPath クエリを使用できます

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

またはLinqから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();

ところでxdoc はXDocumentクラスのインスタンスです:

var xdoc = new XDocument(xml);
于 2012-10-30T13:00:09.537 に答える