2014-11-06 62 views
0

我只是試圖從MessageInfo獲取值。此處的發件人是xml的摘錄。我只想要「發件人」的價值。我曾嘗試與衆多的XDocument不同的東西,並且想使用LINQ查詢 我都試過了,試圖從XDocument獲取單個值,但似乎沒有任何工作

var query1 = doc.Descendants("MessageInfo").Select(s => new MessageInfo 
{ 
    SYSGENID = s.Element("SysGenID").Value, 
    TIME_STAMP = s.Element("TimeStamp").Value, 
    SENDER = s.Element("Sender").Value, 
    RECEIVER = s.Element("Receiver").Value, 
    ENTITY_CODE = s.Element("EntityCode").Value 
}).FirstOrDefault(); 

的QUERY1返回null。以下是XML

的例子

我也試過

XDocument doc = XDocument.Load(filePath); 
       var messageInfo = doc.Root.Elements("MessageInfo"); 

       var res = from m in messageInfo 
         select new 
         { 
          msgInfo = m.Element("MessageInfo").Value 
         }; 

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema instance" 
        xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <soap:Body> 
     <PutSchedule xmlns="http://www.nwpp.org/eide"> 
     <MessageInfo> 
      <SysGenID>4431</SysGenID> 
      <TimeStamp>2014-08-12T10:34:28.068000</TimeStamp> 
      <Sender>611</Sender> 
      <Receiver>WECC</Receiver> 
      <EntityCode>611</EntityCode> 
     </MessageInfo> 
     <Schedules> 
      <Schedule> 
      <ScheduleDescription> 
       <StartTime>2014-08-12T00:00:00</StartTime> 
       <EndTime>2014-08-15T00:00:00</EndTime> 
       <AccountCode>259S.NRGREEN_G1.BaseMW</AccountCode> 
      </ScheduleDescription> 
      <Quantities> 

回答

1

你有,你必須使用一個命名空間。

XNamespace ns = "http://www.nwpp.org/eide"; 


var query1 = doc.Descendants(ns +"MessageInfo").Select(s => new MessageInfo 
          { 
           SYSGENID = s.Element(ns +"SysGenID").Value, 
           TIME_STAMP = s.Element(ns +"TimeStamp").Value, 
           SENDER = s.Element(ns +"Sender").Value, 
           RECEIVER = s.Element(ns +"Receiver").Value, 
           ENTITY_CODE = s.Element(ns +"EntityCode").Value 
          }).FirstOrDefault(); 
相關問題