2011-08-30 60 views
-2

變量resp具有以下值。 System.Xml.Linq.XElement resp - 如何在C#中獲取狀態碼的值?Xelement搜索

謝謝!

** RESP的值是(不包括整個XML這是很長):

<?xml version="1.0" encoding="utf-8" ?> 
<fiAPI xmlns="http://integration.fiapi.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" xsi:schemalocation="http://integration.fiapi.com fiDocumentInquiry.xsd"> 
    <fiHeader Version="2.0"> 
    <Service Version="1.0" Name="FiservArchiveAccessAPI"> 
     <DateTime>2011-08-29T02:27:21-0-4:00</DateTime> 
     <UUID>12345678-1234-1234-1234-123456789012</UUID> 
    </Service> 
    <Security> 
     <AuthenticationMaterial> 
     <PrincipalPWD></PrincipalPWD> 
     </AuthenticationMaterial> 
     <PrincipalID></PrincipalID> 
    </Security> 
    <Client Version="1.3"> 
     <VendorID>Vendor Name</VendorID> 
     <AppID>CWS</AppID> 
     <OrgID>44444451</OrgID> 
     <SessionID>88888888-4444-4444-4444-123456789012</SessionID> 
    </Client> 
    <DataSource> 
     <URI /> 
    </DataSource> 
    </fiHeader> 
    <Response TypeOfResponse="DocumentInquiryRs" TotalRows="2"> 
    <Status> 
     <StatusCode>0</StatusCode> 
     <Severity /> 
    </Status> 
    <RequestEcho TypeOfRequest="DocumentInquiryRq" RequestID="123" Echo="True"> 
+0

oh no @亨克:答案是* allways * 42!所以你想要:public int GetResp(XElement element){return 42; }:D – Carsten

+0

確實給出了更有幫助的評論:我們如何從這個角度猜測這個問題?什麼是你討厭的長長的神祕字符串中的「狀態碼」?它有什麼格式? – Carsten

+0

+1編輯 - 謝謝你 – Carsten

回答

2

你可以使用Descendants方法。因爲你的XML有一個名字空間,請確保在查詢時包含它:

class Program 
{ 
    static void Main() 
    { 
     var resp = XElement.Load("test.xml"); 
     var statusCode = resp 
      .Descendants("{http://integration.fiapi.com}StatusCode") 
      .FirstOrDefault(); 
     if (statusCode != null) 
     { 
      Console.WriteLine(statusCode.Value); 
     } 
    } 
} 
+0

現在你讓我感興趣了......你能讀懂頭腦還是從哪裏來的? – Carsten

+2

@Coenoen,我能讀懂頭腦。 –

+0

顯而易見...抽獎的一些提示? ...這個問題今天/本週出現的頻率如何? ...哦對不起 - 猜猜我現在一定很困...點擊編輯看看吧? ... +1對我來說是愚蠢的 – Carsten