2015-08-05 1 views
0

У меня есть следующие XMLLINQ TO XML извлечения дочерний элемент Значение

<ABC xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://ns.hr-xml.org/2007-04-15"> 
    <ReceiptId> 
     <IdValue>123</IdValue> 
    </ReceiptId> 
    <ClientOrderId> 
     <IdValue>345</IdValue> 
    </ClientOrderId> 
    <AccessPoint> 
     <Description>My Description</Description> 
    </AccessPoint> 
    <ABCStatus> 
     <Status>Error</Status> 
     <Details>ERRORS: 
Talent is already in an active process for this opening. 
     </Details> 
     <StatusDate>2015-08-05</StatusDate> 
    </ABCStatus> 
</ABC> 

Я пытаюсь получить значение 345 элемент вложен в IdValue и ClientOrderId

Я использовал Linq для XML-кода в C# для получения значения без везения

XDocument XMLResults = XDocument.Parse(sResult); 

var sClientOrderID = 
     from nodeAElem in XMLResults.Root.Elements("ABC") 
     from nodeA1Elem in nodeAElem.Elements("ClientOrderId") 
     from nodeA11Elem in nodeA1Elem.Elements("IdValue") 
     select nodeA11Elem.Value; 

также необходимо получить значение состояния элементов, который является ошибкой для приведенных выше XML.

Любая помощь очень ценится

+0

Ваш XML-документ использует пространство имен, вы должны использовать его в запросе, чтобы заставить его работать. – MarcinJuraszek

ответ

0
  1. Ваш XML-документ использует пространство имен, вы должны использовать его в запросе, чтобы заставить его работать.
  2. Root уже приносит вам ABC элемент, так что вам не придется вызывать Elements("ABC")
  3. Вы ищете одно значение, так что вы, вероятно, хотите использовать Element вместо Elements.
var ns = (XNamespace)"http://ns.hr-xml.org/2007-04-15"; 
var sClientOrderID = (int)XMLResults.Root 
            .Element(ns + "ClientOrderId") 
            .Element(ns + "IdValue"); 
+0

Спасибо, Марцин, вы полностью очистили все мои ошибки ... очень цените вашу обратную связь – nonojojo