Solved

using xml and classic asp

Posted on 2014-04-04
13
775 Views
Last Modified: 2014-04-04
Hi All,

I have used xml in actionscript before, but I now find myself trying to integrate a tool with XML in classic ASP.

I really need some advice and pointers. (I am starting from scrath!)

I have an API key to use an English Dictionary to send it a word and it should present me with some xml containing definitions, links to wav files containing pronunciation, synonyms, antonyms etc.

They kindly supplied a sample xml snippet and a more detailed file of the actual xml structure.

I am now not getting any errors, but neither am I getting any results. This is what I have:

---

Dim xmlDOM, itemList, strNewWord, strNewSound, itemAttrib, strMyWord

strMyWord = "wonderful"

Set xmlDOM = Server.CreateObject("MSXML2.DOMDocument")
xmlDOM.async = False
xmlDOM.setProperty "ServerHTTPRequest", True
xmlDOM.Load("http://www.dictionaryapi.com/api/v1/references/learners/xml/"&strMyWord&"?key=xxxxxxxxxxxxxxx")
 
Set itemList = XMLDom.SelectNodes("hw")


 
For Each itemAttrib In itemList
   strNewWord =itemAttrib.SelectSingleNode("hw").text
   strNewSound =itemAttrib.SelectSingleNode("sound").text
   %>
   <tr>
           <td>This is static</td>
      <td><%=strNewWord%></td>
      <td><%=strNewSound%></td>
   </tr>
<%
Next
 
Set xmlDOM = Nothing
Set itemList = Nothing
0
Comment
Question by:Abiel de Groot
  • 7
  • 4
  • 2
13 Comments
 
LVL 5

Author Comment

by:Abiel de Groot
ID: 39977495
Sorry...   This is their example xml response:

<entry id="apple"> <hw highlight="yes">ap*ple</hw> <sound> <wav>apple001.wav</wav> </sound> <pr>'æp¿l</pr> <fl>noun</fl> <in> <il>plural</il> <if>ap*ples</if> </in> <def> <dt>:a round fruit with red, yellow, or green skin and firm white flesh <wsgram>count</wsgram> <vi>crisp juicy <it>apples</it> </vi> <vi>a bad/rotten <it>apple</it> [=an apple that has rotted and cannot be eaten]</vi> <wsgram>noncount</wsgram> <vi>a piece of <it>apple</it> </vi> <un>often used before another noun <vi> <it>apple</it> pie</vi> <vi> <it>apple</it> juice</vi> <vi> <it>apple</it> trees</vi> </un> <dx>see color picture on page C5</dx> <snote>In figurative use, a <phrase>bad apple</phrase> or <phrase>rotten apple</phrase> is a bad member of a group who causes problems for the rest of the group. <vi>A few <it>bad apples</it> cheated on the test, and now everyone has to take the test again.</vi> <vi>One <it>rotten apple</it> ruined the day for the rest of us.</vi> </snote> <dx>see also <dxt>adam's apple</dxt> <dxt>crab apple</dxt> </dx> </dt> </def> <dro> <dre>compare apples to apples/oranges</dre> <dx>see <dxt>compare</dxt> </dx> </dro> <dro> <dre>the apple of someone's eye</dre> <def> <dt>:a person or thing that someone loves very much <vi>His daughter is <it>the apple of his eye</it>.</vi> </dt> </def> </dro> <dro> <dre>upset the apple cart</dre> <dx>see <dxt>upset</dxt> </dx> </dro> </entry>
0
 
LVL 52

Expert Comment

by:Carl Tawn
ID: 39977595
This:
Set itemList = XMLDom.SelectNodes("hw")

Open in new window

Should probably be:
Set itemList = XMLDom.SelectNodes("entry")

Open in new window

Assuming you are trying to sow just the "hw" and "sound" elements of each "entry".
0
 
LVL 5

Author Comment

by:Abiel de Groot
ID: 39977634
it makes no difference.
0
Master Your Team's Linux and Cloud Stack!

The average business loses $13.5M per year to ineffective training (per 1,000 employees). Keep ahead of the competition and combine in-person quality with online cost and flexibility by training with Linux Academy.

 
LVL 5

Author Comment

by:Abiel de Groot
ID: 39977641
Would you lie me to send you the API key so you can try it?

A.
0
 
LVL 52

Expert Comment

by:Carl Tawn
ID: 39977651
If you can, that would be helpful. Is there any more to the XML? Namely any higher level nodes, or an XML declaration?
0
 
LVL 5

Author Comment

by:Abiel de Groot
ID: 39977663
I sent you a private message in Facebook ;-)

A
0
 
LVL 5

Author Comment

by:Abiel de Groot
ID: 39977664
I really appreciate your advice on this. I am stuck :-)
0
 
LVL 52

Accepted Solution

by:
Carl Tawn earned 500 total points
ID: 39977708
Ah, ok, your XML has a higher level root node, which you need to take account of in your SelectNodes call:
<%
Dim xmlDOM, itemList, strNewWord, strNewSound, itemAttrib, strMyWord

strMyWord = "wonderful"

Set xmlDOM = Server.CreateObject("MSXML2.DOMDocument")
xmlDOM.async = False
xmlDOM.setProperty "ServerHTTPRequest", True
xmlDOM.Load("http://www.dictionaryapi.com/api/v1/references/learners/xml/"&strMyWord&"?key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")

Set itemList = XMLDom.SelectNodes("entry_list/entry")
 
For Each itemAttrib In itemList
   strNewWord =itemAttrib.SelectSingleNode("hw").text
   strNewSound =itemAttrib.SelectSingleNode("sound").text
%>
   <tr>
           <td>This is static</td>
      <td><%=strNewWord%></td>
      <td><%=strNewSound%></td>
   </tr>
<%
Next
 
Set xmlDOM = Nothing
Set itemList = Nothing
%>

Open in new window

For reference, this is the full XML you are receiving:
<?xml version="1.0"?>
<entry_list version="1.0">
	<entry id="wonderful">
		<hw highlight="yes">won*der*ful</hw>
		<sound><wav>wonder03.wav</wav></sound>
		<pr>'w?nd?f?l</pr>
		<fl>adjective</fl>
		<def><gram>more won*der*ful; most won*der*ful</gram>
			<dt>:extremely good <vi>The rooms were filled with <it>wonderful</it> works of art.</vi>
				<vi>It was a <it>wonderful</it> party.</vi>
				<vi>You did a <it>wonderful</it> job.</vi>
				<vi>We had a <it>wonderful</it> [=<it>great</it>, <it>terrific</it>, <it>fantastic</it>] meal.</vi>
				<vi>She came home with <it>wonderful</it> news.</vi>
				<vi>It's <it>wonderful</it> to finally meet you.</vi></dt></def>
		<uro><ure>won*der*ful*ly</ure>
			<fl>adverb</fl>
			<utxt><vi>The story was <it>wonderfully</it> written.</vi></utxt></uro></entry>
</entry_list>

Open in new window

0
 
LVL 52

Expert Comment

by:Scott Fell, EE MVE
ID: 39977727
This is tested and works

<%
strMyWord = "apples"
strKey = "YOUR_OWN_KEY"
Set xmlDOM = Server.CreateObject("MSXML2.DOMDocument")
xmlDOM.async = False
xmlDOM.setProperty "ServerHTTPRequest", True
xmlDOM.Load("http://www.dictionaryapi.com/api/v1/references/learners/xml/"&strMyWord&"?key="&strKey)

Set hw = XMLDom.SelectNodes("entry_list/entry/hw")
set sound = XMLDom.SelectNodes("entry_list/entry/sound/wav")
For Each itemAttrib In hw
   response.write itemAttrib.text &"<br>"
Next
For Each itemAttrib In sound
   response.write itemAttrib.text &"<br>"
Next
Set xmlDOM = Nothing
Set hw = Nothing
%>

Open in new window


It helps to expand the xml and you can see the tree structure.
<?xml version="1.0"?>
<entry id="apple">
    <hw highlight="yes">ap*ple</hw>
    <sound>
        <wav>apple001.wav</wav>
    </sound>
    <pr>'&#xE6;p&#xBF;l</pr>
    <fl>noun</fl>
    <in>
        <il>plural</il>
        <if>ap*ples</if>
    </in>
    <def>
        <dt>:a round fruit with red, yellow, or green skin and firm white flesh <wsgram>count</wsgram>
        <vi>crisp juicy <it>apples</it>
    </vi>
    <vi>a bad/rotten <it>apple</it> [=an apple that has rotted and cannot be eaten]</vi>
    <wsgram>noncount</wsgram>
    <vi>a piece of <it>apple</it>
</vi>
<un>often used before another noun <vi>
<it>apple</it> pie</vi>
<vi>
    <it>apple</it> juice</vi>
    <vi>
        <it>apple</it> trees</vi>
    </un>
    <dx>see color picture on page C5</dx>
    <snote>In figurative use, a <phrase>bad apple</phrase> or <phrase>rotten apple</phrase> is a bad member of a group who causes problems for the rest of the group. <vi>A few <it>bad apples</it> cheated on the test, and now everyone has to take the test again.</vi>
    <vi>One <it>rotten apple</it> ruined the day for the rest of us.</vi>
</snote>
<dx>see also <dxt>adam's apple</dxt>
<dxt>crab apple</dxt>
</dx>
</dt>
</def>
<dro>
    <dre>compare apples to apples/oranges</dre>
    <dx>see <dxt>compare</dxt>
</dx>
</dro>
<dro>
    <dre>the apple of someone's eye</dre>
    <def>
        <dt>:a person or thing that someone loves very much <vi>His daughter is <it>the apple of his eye</it>.</vi>
    </dt>
</def>
</dro>
<dro>
    <dre>upset the apple cart</dre>
    <dx>see <dxt>upset</dxt>
</dx>
</dro>
</entry>

Open in new window

0
 
LVL 52

Expert Comment

by:Scott Fell, EE MVE
ID: 39977735
Well, looks like you have two similar answers.   I had registered for a key to figure this out.
0
 
LVL 52

Expert Comment

by:Carl Tawn
ID: 39977740
I was too lazy to do that :)
0
 
LVL 5

Author Comment

by:Abiel de Groot
ID: 39977742
Many thanks. Not only for the answer but for outlining how to do it in the future. I really appreciate it.

Abiel M de Groot
0
 
LVL 5

Author Comment

by:Abiel de Groot
ID: 39977746
Sorry Scott. Carl was at this first and came up with the right answer. I did not see your entry until too late.

Kind regards

A
0

Featured Post

Resolve Critical IT Incidents Fast

If your data, services or processes become compromised, your organization can suffer damage in just minutes and how fast you communicate during a major IT incident is everything. Learn how to immediately identify incidents & best practices to resolve them quickly and effectively.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

I have helped a lot of people on EE with their coding sources and have enjoyed near about every minute of it. Sometimes it can get a little tedious but it is always a challenge and the one thing that I always say is:  The Exchange of information …
Many times as a report developer I've been asked to display normalized data such as three rows with values Jack, Joe, and Bob as a single comma-separated string such as 'Jack, Joe, Bob', and vice versa.  Here's how to do it. 
Two types of users will appreciate AOMEI Backupper Pro: 1 - Those with PCIe drives (and haven't found cloning software that works on them). 2 - Those who want a fast clone of their boot drive (no re-boots needed) and it can clone your drive wh…
Although Jacob Bernoulli (1654-1705) has been credited as the creator of "Binomial Distribution Table", Gottfried Leibniz (1646-1716) did his dissertation on the subject in 1666; Leibniz you may recall is the co-inventor of "Calculus" and beat Isaac…

839 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question