Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 832
  • Last Modified:

using xml and classic asp

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
Abiel de Groot
Asked:
Abiel de Groot
  • 7
  • 4
  • 2
1 Solution
 
Abiel de GrootAuthor Commented:
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
 
Carl TawnSystems and Integration DeveloperCommented:
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
 
Abiel de GrootAuthor Commented:
it makes no difference.
0
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
Abiel de GrootAuthor Commented:
Would you lie me to send you the API key so you can try it?

A.
0
 
Carl TawnSystems and Integration DeveloperCommented:
If you can, that would be helpful. Is there any more to the XML? Namely any higher level nodes, or an XML declaration?
0
 
Abiel de GrootAuthor Commented:
I sent you a private message in Facebook ;-)

A
0
 
Abiel de GrootAuthor Commented:
I really appreciate your advice on this. I am stuck :-)
0
 
Carl TawnSystems and Integration DeveloperCommented:
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
 
Scott Fell, EE MVEDeveloper & EE ModeratorCommented:
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
 
Scott Fell, EE MVEDeveloper & EE ModeratorCommented:
Well, looks like you have two similar answers.   I had registered for a key to figure this out.
0
 
Carl TawnSystems and Integration DeveloperCommented:
I was too lazy to do that :)
0
 
Abiel de GrootAuthor Commented:
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
 
Abiel de GrootAuthor Commented:
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

[Webinar On Demand] Database Backup and Recovery

Does your company store data on premises, off site, in the cloud, or a combination of these? If you answered “yes”, you need a data backup recovery plan that fits each and every platform. Watch now as as Percona teaches us how to build agile data backup recovery plan.

  • 7
  • 4
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now