Satış siparişlerini işlemek için XML yanıtını ayrıştırmaya çalışıyorum ancak XPath araması çalışmıyor.Ad alanı arama öğesi bulunamıyor
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<SalesOrderServiceFindResponse xmlns="http://schemas.microsoft.com/dynamics/2008/01/services">
<SalesOrder xmlns="http://schemas.microsoft.com/dynamics/2008/01/documents/SalesOrder">
<DocPurpose>Original</DocPurpose>
<SenderId>bell</SenderId>
<SalesTable class="entity">
<_DocumentHash>33e9a9be2bcafdb1edde17c4e12d1166</_DocumentHash>
<ConsTarget_JP>No</ConsTarget_JP>
<CurrencyCode>USD</CurrencyCode>
<CustAccount>ANDE01</CustAccount>
<CustGroup>Distributo</CustGroup>
<CustomsExportOrder_IN>No</CustomsExportOrder_IN>
<CustomsShippingBill_IN>No</CustomsShippingBill_IN>
<DAXIntegrationId>{5A1B9C05-99DD-4E4E-91F1-2702117CEF98}</DAXIntegrationId>
<Deadline>2016-03-31</Deadline>
<DeliveryDate>2016-03-01</DeliveryDate>
...
</SalesTable>
<SalesTable>
...
</SalesTable>
</SalesOrder>
</SalesOrderServiceFindResponse>
</s:Body>
</s:Envelope>
Ben harici bir sistem verileri işleyebilmesi için üstesinden gelmeye çalışıyorum birden <SalesTable>
kişiler vardır:
İşte XML yanıtının bir pasajı bu.
Ancak şu çalışmaz:
response = client.call(:find,
message_tag: :SalesOrderServiceFindRequest,
message: {
:query_criteria => {
:@xmlns => "http://schemas.microsoft.com/dynamics/2006/02/documents/QueryCriteria",
:criteria_element => {
:data_source_name => "SalesTable",
:field_name => "CustGroup",
:operator => "Equal",
:value1 => "Distributo",
}
}
}
)
Bu boş:
puts response.xpath("//SalesTable")
Bu boş çok:
puts response.xpath("//SalesOrder", "xmlns" => "http://schemas.microsoft.com/dynamics/2008/01/documents/SalesOrder")
:
puts response.xpath("//SalesOrder/SalesTable", "xmlns" => "http://schemas.microsoft.com/dynamics/2008/01/documents/SalesOrder") # empty
Yani bu
Anlamıyorum, çünkü bir SalesTable
öğesinin olduğunu doğrulayabiliyorum, bu nedenle bulunmalı, ancak çalışmıyor.
Evet, doğru cevap budur. [Aramada Nokogiri öğreticisi] 'ndan daha fazlasını okuyabilirsiniz (http://www.nokogiri.org/tutorials/searching_a_xml_html_document.html#namespaces). –
Sorun, bu öğenin bu önek ile adlandırılmış olmamasıdır. Bir Microsoft Dynamics AIF yanıtı olduğu için sistemin neyle yanıt verdiğini kontrol edemiyorum. Bu şekilde farklı bir ad alanı ekleyemem. – Oranges13
Çalışmıyor. Etiket ' 'değil, değil, bu yüzden hala eşleşmiyor. –
Oranges13