2013-11-26 4 views
0

Привет всем Я этот xml-комментарий для мыла ниже, исходящий из веб-службы, мне нужно получить xmlnodelist, где Treatmenttype = 1 под "IncomingApplications" родительский узел, я дружнее, чтобы получить XmlNodeList всех «IncomingApplications» с использованием этого кода нижеполучить xmlnodes от ответа на мыло, чье дочернее значение узла равно 1 с использованием потомка и имени()

XmlNodeList xmlnode = xmlDoc.DocumentElement.SelectNodes("//soap:Body/descendant::*[name()='IncomingApplications']", nsmgr); 

Теперь я хочу, чтобы изменить выше XPath таким образом, что возвращение IncomingApplications узлы которых ребенок т.е. TreatmentType = 1, любая помощь подсказывает, как изменить xpath, чтобы получить результат?

<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> 
    <GetIncomingApplicationsDataResponse xmlns="http://test.com/webservices/service"> 
     <GetIncomingApplicationsDataResult> 
     <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"> 
      <InDataSet xmlns="http://test.com/webservices/xyzConfigWS/InDataSet.xsd"> 
      <IncomingApplications diffgr:id="InApp1" msdata:rowOrder="0"> 
       <SiteName>Test</SiteName> 
       <QueueId>1501</QueueId> 
       <ApplicationId>3362546</ApplicationId> 
       <CountryId>1</CountryId> 
       <HoldingQueueId>33625460</HoldingQueueId> 
       <CallbackQueueId>3366025</CallbackQueueId> 
       <TreatmentType>0</TreatmentType> 
       <UnderThresholdQueueId>33625460</UnderThresholdQueueId> 
       <IVRGroup>IVR</IVRGroup> 
      </IncomingApplications> 
      <IncomingApplications diffgr:id="InApp2" msdata:rowOrder="1"> 
       <SiteName>Test</SiteName> 
       <QueueId>1501</QueueId> 
       <ApplicationId>3362600</ApplicationId> 
       <CountryId>1</CountryId> 
       <HoldingQueueId>33626000</HoldingQueueId> 
       <CallbackQueueId>3366025</CallbackQueueId> 
       <TreatmentType>0</TreatmentType> 
       <UnderThresholdQueueId>33626000</UnderThresholdQueueId> 
       <IVRGroup>IVR</IVRGroup> 
      </IncomingApplications> 
      <IncomingApplications diffgr:id="InApp3" msdata:rowOrder="2"> 
       <SiteName>Test</SiteName> 
       <QueueId>1501</QueueId> 
       <ApplicationId>3362769</ApplicationId> 
       <CountryId>1</CountryId> 
       <HoldingQueueId>33627690</HoldingQueueId> 
       <CallbackQueueId>3366025</CallbackQueueId> 
       <TreatmentType>1</TreatmentType> 
       <UnderThresholdQueueId>33627690</UnderThresholdQueueId> 
       <IVRGroup>IVR</IVRGroup> 
      </IncomingApplications> 
     </diffgr:diffgram> 
     </GetIncomingApplicationsDataResult> 
    </GetIncomingApplicationsDataResponse> 
    </soap:Body> 
</soap:Envelope> 
+0

Кто-нибудь с предложением? – Danyal

ответ

0

Got ответ от другого форума, вот решение с помощью LINQ к XML, а затем XPath

XDocument XDoc = XDocument.Load ("SampleFile.xml");

строка nameSpaceToSearch = @ "http://test.com/webservices/xyzConfigWS/InDataSet.xsd"; var result = (from xElement in xDoc.Descendants (XIname.Get («IncomingApplications», nameSpaceToSearch)) где xElement.Element (XName.Get («Тип обработки», имяSpaceToSearch)). Значение == "1" выберите xElement);

 Смежные вопросы

  • Нет связанных вопросов^_^