Отображать данные XML с классическим ASP - PullRequest
0 голосов
/ 22 декабря 2010

Доброе утро,

Я изо всех сил пытаюсь заставить этот код работать.Я потратил часы, настраивая, изменяя его ... и он все еще не будет работать.

<%
Dim nTitle, nDescription, nWeight, nImage, nPrice, StoreMemberID, nDobaID, StoreItemCatID, nTrue, nFalse, MarkupPerc, nYes, nNo
Dim nFileName, intNewID, paryProducts

FUNCTION FetchProductRecords(str)

  Dim objHTTP, RSSURL, RSSFeed, xmlRSSFeed, RSSItems, objItem, objChild, paryOut, nCell
  Redim paryOut(6,-1)
  nCell = 0
  RSSURL = "http://www.storeboard.com/excel/" & str

  Set objHTTP = Server.CreateObject("Msxml2.ServerXMLHTTP")
  objHTTP.open "GET",RSSURL,false
  objHTTP.send
  RSSFeed = objHTTP.responseText

  Set xmlRSSFeed = Server.CreateObject("MSXML2.DomDocument")
  xmlRSSFeed.async = false
  xmlRSSFeed.LoadXml(RSSFeed)
  Set objHTTP = Nothing

  Set RSSItems = xmlRSSFeed.getElementsByTagName("Row")
  Set xmlRSSFeed = Nothing

  Redim preserve paryOut(6,RSSItems.length-1)
  FOR i = 0 TO RSSItems.length - 1
    Set RSSItem = RSSItems.Item(i)
    FOR EACH objChild IN RSSItem.childNodes
      IF nCell = 3 THEN
        paryOut(0,i) = objChild.text
      ELSEIF nCell = 5 THEN
        paryOut(1,i) = objChild.text
      ELSEIF nCell = 7 THEN
        paryOut(2,i) = objChild.text
      ELSEIF nCell = 27 THEN
        paryOut(3,i) = objChild.text
      ELSEIF nCell = 23 THEN
        paryOut(4,i) = objChild.text
      ELSEIF nCell = 40 THEN
        paryOut(5,i) = objChild.text
      END IF
      nCell = nCell + 1
    NEXT
    nCell = 0
  NEXT
  FetchProductRecords = paryOut
END FUNCTION

paryProducts = FetchProductRecords(nFileName)
IF isArray(paryProducts) THEN
%>
<table cellpadding="0" cellspacing="0" border="1" width="100%">
  <tr style="background-color:#000000;color:#FFFFFF;font-weight:bold;font-family:Arial, Helvetica, sans-serif;font-size:10px">
    <td style="padding:5px" align="center">DOBA ID</td>
    <td style="padding:5px" align="center">TITLE</td>
    <td style="padding:5px" align="center">DESCRIPTION</td>
    <td style="padding:5px" align="center">PRICE</td>
    <td style="padding:5px" align="center">WEIGHT</td>
    <td style="padding:5px" align="center">IMAGE</td>
  </tr>
  <% FOR i = 0 TO uBound(paryProducts,2) %>
  <% IF i > 0 THEN ' to avoid the header %>
  <tr style="font-family:Arial, Helvetica, sans-serif;font-size:10px">
    <td style="padding:5px"><%=paryProducts(0,i)%></td>
    <td style="padding:5px"><%=paryProducts(1,i)%></td>
    <td style="padding:5px"><%=paryProducts(2,i)%></td>
    <td style="padding:5px"><%=paryProducts(3,i)%></td>
    <td style="padding:5px"><%=paryProducts(4,i)%></td>
    <td style="padding:5px"><%=paryProducts(5,i)%></td>
  </tr>
  <% END IF %>
  <% NEXT %>
</table>
<% END IF %>

Всего в файле XML есть 40 полей что-то.Вы можете проверить xml-файл здесь: http://www.storeboard.com/excel/cameras2.xml

Я был бы признателен за любую помощь с этим кодом, чтобы наконец его закончить.

Хорошего дня и счастливого Рождества, Пол

Ответы [ 2 ]

0 голосов
/ 23 декабря 2010

@ neojakey: проблема, которую я вижу, состоит в том, что количество ячеек в каждой строке не совпадает. В первом ряду («заголовок») содержится 45 ячеек. В каждом последующем ряду меньше ячеек, но не более 45, и они, похоже, тоже не коррелируют. Я сопоставил данные второго ряда с первым рядом, чтобы показать вам, что я имею в виду:

+----+------------------------+-------------------------------------------------------------------------------------------------------+
|  0 | supplier_id            | 4                                                                                                     |
+----+------------------------+-------------------------------------------------------------------------------------------------------+
|  1 | drop_ship_fee          | 0                                                                                                     |
+----+------------------------+-------------------------------------------------------------------------------------------------------+
|  2 | supplier_name          | Diamond                                                                                               |
+----+------------------------+-------------------------------------------------------------------------------------------------------+
|  3 | product_id             | 17697                                                                                                 |
+----+------------------------+-------------------------------------------------------------------------------------------------------+
|  4 | product_sku            | BCR10                                                                                                 |
+----+------------------------+-------------------------------------------------------------------------------------------------------+
|  5 | title                  | OmniSource 10 12 AC/DC Charger                                                                        |
+----+------------------------+-------------------------------------------------------------------------------------------------------+
|  6 | warranty               | OmniSource 10 12 AC/DC Charger / Reconditioner for VHS &amp; VHS-C (9.6V to 12V) full size camcorders |
+----+------------------------+-------------------------------------------------------------------------------------------------------+
|  7 | description            | new                                                                                                   |
+----+------------------------+-------------------------------------------------------------------------------------------------------+
|  8 | condition              | Lenmar                                                                                                |
+----+------------------------+-------------------------------------------------------------------------------------------------------+
|  9 | details                | 0                                                                                                     |
+----+------------------------+-------------------------------------------------------------------------------------------------------+
| 10 | manufacturer           | 2010-12-19T17:24:23.000                                                                               |
+----+------------------------+-------------------------------------------------------------------------------------------------------+
| 11 | brand_name             | 22091                                                                                                 |
+----+------------------------+-------------------------------------------------------------------------------------------------------+
| 12 | case_pack_quantity     | BCR10                                                                                                 |
+----+------------------------+-------------------------------------------------------------------------------------------------------+
| 13 | country_of_origin      | 2147483647                                                                                            |
+----+------------------------+-------------------------------------------------------------------------------------------------------+
| 14 | product_last_update    | 2147483647                                                                                            |
+----+------------------------+-------------------------------------------------------------------------------------------------------+
| 15 | item_id                | OmniSource 10 12 AC/DC Charger                                                                        |
+----+------------------------+-------------------------------------------------------------------------------------------------------+
| 16 | item_sku               | 0                                                                                                     |
+----+------------------------+-------------------------------------------------------------------------------------------------------+
| 17 | mpn                    | 0                                                                                                     |
+----+------------------------+-------------------------------------------------------------------------------------------------------+
| 18 | upc                    | 1.95                                                                                                  |
+----+------------------------+-------------------------------------------------------------------------------------------------------+
| 19 | item_name              | 8.27                                                                                                  |
+----+------------------------+-------------------------------------------------------------------------------------------------------+
| 20 | item_weight            | 28.01                                                                                                 |
+----+------------------------+-------------------------------------------------------------------------------------------------------+
| 21 | ship_alone             | 27.2                                                                                                  |
+----+------------------------+-------------------------------------------------------------------------------------------------------+
| 22 | ship_freight           | 69.95                                                                                                 |
+----+------------------------+-------------------------------------------------------------------------------------------------------+
| 23 | ship_weight            | 4                                                                                                     |
+----+------------------------+-------------------------------------------------------------------------------------------------------+
| 24 | ship_cost              | in-stock                                                                                              |
+----+------------------------+-------------------------------------------------------------------------------------------------------+
| 25 | max_ship_single_box    | 0                                                                                                     |
+----+------------------------+-------------------------------------------------------------------------------------------------------+
| 26 | map                    | 2010-12-16T15:06:25.000                                                                               |
+----+------------------------+-------------------------------------------------------------------------------------------------------+
| 27 | price                  | Catalog||Electronics &amp; computer||Camera &amp; photo||Digital camera accessories                   |
+----+------------------------+-------------------------------------------------------------------------------------------------------+
| 28 | custom_price           | http://images.doba.com/products/4/images_prodLarge_BCR10.jpg                                          |
+----+------------------------+-------------------------------------------------------------------------------------------------------+
| 29 | prepay_price           | 400                                                                                                   |
+----+------------------------+-------------------------------------------------------------------------------------------------------+
| 30 | street_price           | 400                                                                                                   |
+----+------------------------+-------------------------------------------------------------------------------------------------------+
| 31 | msrp                   | 0                                                                                                     |
+----+------------------------+-------------------------------------------------------------------------------------------------------+
| 32 | qty_avail              |                                                                                                       |
+----+------------------------+-------------------------------------------------------------------------------------------------------+
| 33 | stock                  |                                                                                                       |
+----+------------------------+-------------------------------------------------------------------------------------------------------+
| 34 | est_avail              |                                                                                                       |
+----+------------------------+-------------------------------------------------------------------------------------------------------+
| 35 | qty_on_order           |                                                                                                       |
+----+------------------------+-------------------------------------------------------------------------------------------------------+
| 36 | item_last_update       |                                                                                                       |
+----+------------------------+-------------------------------------------------------------------------------------------------------+
| 37 | item_discontinued_date |                                                                                                       |
+----+------------------------+-------------------------------------------------------------------------------------------------------+
| 38 | categories             |                                                                                                       |
+----+------------------------+-------------------------------------------------------------------------------------------------------+
| 39 | attributes             |                                                                                                       |
+----+------------------------+-------------------------------------------------------------------------------------------------------+
| 40 | image_file             |                                                                                                       |
+----+------------------------+-------------------------------------------------------------------------------------------------------+
| 41 | image_width            |                                                                                                       |
+----+------------------------+-------------------------------------------------------------------------------------------------------+
| 42 | image_height           |                                                                                                       |
+----+------------------------+-------------------------------------------------------------------------------------------------------+
| 43 | additional_images      |                                                                                                       |
+----+------------------------+-------------------------------------------------------------------------------------------------------+
| 44 | is_customized          |                                                                                                       |
+----+------------------------+-------------------------------------------------------------------------------------------------------+

Поскольку product_id никогда не перемещается из # 3, а title никогда не перемещается из # 5, ваше приложение работает. Однако поля description, price, weight и image нарушены из-за несоответствия данных. Если вы обновите код, в котором вы просматриваете цикл RSSItem.childNodes до

IF nCell = 3 THEN
    paryOut(0,i) = objChild.text 'product_id'
ELSEIF nCell = 5 THEN
    paryOut(1,i) = objChild.text 'title'
ELSEIF nCell = 6 THEN
    paryOut(2,i) = objChild.text 'description'
ELSEIF nCell = 27 THEN
    paryOut(3,i) = objChild.text 'price - could be ?'
ELSEIF nCell = 23 THEN
    paryOut(4,i) = objChild.text 'weight - could be ?'
ELSEIF nCell = 28 THEN
    paryOut(5,i) = objChild.text 'image'
END IF

... эта проблема будет исправлена ​​во многих ваших продуктах, и вы по крайней мере получите право description вместо condition продукта, а также image_file чаще, чем никогда его не получите все.

Решение проблемы, однако, состоит в том, чтобы получить то, что когда-либо генерирует данные, для получения <Cell>0</Cell>, если он не может найти значение для ячейки заголовка, которое он должен отображать, а не просто не выводить на все, что мешает жестко закодированной логике вашего приложения.

0 голосов
/ 22 декабря 2010

Вы установили nFileName как « camera2.xml », верно?

nFileName = "cameras2.xml"
paryProducts = FetchProductRecords(nFileName)

Кроме того, он отлично работает с моей машины ..

Если ваше приложение и XML находятся на одном сайте, ознакомьтесь с этой статьей INFO : не отправлять запросы ServerXMLHTTP или WinHTTP на один и тот же сервер

...