Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Need some XML parsing help
Message
Information générale
Forum:
Visual FoxPro
Catégorie:
XML, XSD
Versions des environnements
Visual FoxPro:
VFP 9
OS:
Windows XP SP2
Network:
Windows XP
Database:
MS SQL Server
Divers
Thread ID:
00999113
Message ID:
00999313
Vues:
43
This message has been marked as a message which has helped to the initial question of the thread.
Glen,

XPATH is your friend <g>...

XPATH lets you query data out by name and attribute.

XPATH works something liek this:

loNode = oDoc.DocumentElement.selectSingleNode("/datafield/subfield[@code='c']")

You can use XPATH to query attributes and elements as well, but it's very primitive in what functinoalty is available for searching.

I don't use XPATH often enough - I need to look up syntax every time as well, but there are several good tutorials available including a few that let you play with your own data.

+++ Rick ---

>I need to parse out several bits of data from a XML structure but I know only how to do this with "brute force" string parsing. My guess that there is a more elegant XML Dom method which can easily navigate and extract the needed data. For example a few pieces of data we are interested in are:
>
> <datafield tag="020" ind1=" " ind2=" ">
>    <subfield code="c">$19.95 ($31.00 Can.)</subfield>
>  </datafield>
>
>We need the price information as in subfield code "c" and:
>
>  <datafield tag="260" ind1=" " ind2=" ">
>    <subfield code="a">San Francisco, CA :</subfield>
>    <subfield code="b">Collins,</subfield>
>    <subfield code="c">1995.</subfield>
>  </datafield>
>
>We also need the data from Datafield tag "260" subfield "b" and "c". The full XML document follows. What I hope to achieve is the technique to navigate and extract data based on node names and attribute values.
>
><?xml version="1.0"?>
><zs:searchRetrieveResponse xmlns:zs="http://www.loc.gov/zing/srw/"><zs:version>1.1</zs:version><zs:numberOfRecords>1</zs:numberOfRecords><zs:records><zs:record><zs:recordSchema>info:srw/schema/1/marcxml-v1.1</zs:recordSchema><zs:recordPacking>xml</zs:recordPacking><zs:recordData><record xmlns="http://www.loc.gov/MARC21/slim">
>  <leader>00978pam  2200277 a 4500</leader>
>  <controlfield tag="001">1141627  </controlfield>
>  <controlfield tag="005">20011130090027.0  </controlfield>
>  <controlfield tag="008">950105s1995    caua          000 0 eng    </controlfield>
>  <datafield tag="035" ind1=" " ind2=" ">
>    <subfield code="9">(DLC)   95001955</subfield>
>  </datafield>
>  <datafield tag="906" ind1=" " ind2=" ">
>    <subfield code="a">7</subfield>
>    <subfield code="b">cbc</subfield>
>    <subfield code="c">orignew</subfield>
>    <subfield code="d">1</subfield>
>    <subfield code="e">ocip</subfield>
>    <subfield code="f">19</subfield>
>    <subfield code="g">y-gencatlg</subfield>
>  </datafield>
>  <datafield tag="955" ind1=" " ind2=" ">
>    <subfield code="a">pc19 to JA00 01-05-95; jk05/desc to jh00 01-06-95; jh21 01-06-95; jh20 01-06-95; CIP ver. pv08 02-29-96</subfield>
>  </datafield>
>  <datafield tag="010" ind1=" " ind2=" ">
>    <subfield code="a">   95001955 </subfield>
>  </datafield>
>  <datafield tag="020" ind1=" " ind2=" ">
>    <subfield code="a">0002250462 :</subfield>
>    <subfield code="c">$19.95 ($31.00 Can.)</subfield>
>  </datafield>
>  <datafield tag="040" ind1=" " ind2=" ">
>    <subfield code="a">DLC</subfield>
>    <subfield code="c">DLC</subfield>
>    <subfield code="d">DLC</subfield>
>  </datafield>
>  <datafield tag="043" ind1=" " ind2=" ">
>    <subfield code="a">e-fr---</subfield>
>  </datafield>
>  <datafield tag="050" ind1="0" ind2="0">
>    <subfield code="a">ND547.5.I4</subfield>
>    <subfield code="b">I52 1995</subfield>
>  </datafield>
>  <datafield tag="082" ind1="0" ind2="0">
>    <subfield code="a">759.4/09/034</subfield>
>    <subfield code="2">20</subfield>
>  </datafield>
>  <datafield tag="245" ind1="0" ind2="0">
>    <subfield code="a">Impressionists' seasons /</subfield>
>    <subfield code="c">edited by Russell Ash.</subfield>
>  </datafield>
>  <datafield tag="260" ind1=" " ind2=" ">
>    <subfield code="a">San Francisco, CA :</subfield>
>    <subfield code="b">Collins,</subfield>
>    <subfield code="c">1995.</subfield>
>  </datafield>
>  <datafield tag="300" ind1=" " ind2=" ">
>    <subfield code="a">86 p. :</subfield>
>    <subfield code="b">col ill. ;</subfield>
>    <subfield code="c">22 cm.</subfield>
>  </datafield>
>  <datafield tag="500" ind1=" " ind2=" ">
>    <subfield code="a">Includes four pages of transparencies.</subfield>
>  </datafield>
>  <datafield tag="650" ind1=" " ind2="0">
>    <subfield code="a">Impressionism (Art)</subfield>
>    <subfield code="z">France.</subfield>
>  </datafield>
>  <datafield tag="650" ind1=" " ind2="0">
>    <subfield code="a">Painting, French</subfield>
>    <subfield code="y">19th century.</subfield>
>  </datafield>
>  <datafield tag="650" ind1=" " ind2="0">
>    <subfield code="a">Seasons in art.</subfield>
>  </datafield>
>  <datafield tag="700" ind1="1" ind2=" ">
>    <subfield code="a">Ash, Russell.</subfield>
>  </datafield>
>  <datafield tag="991" ind1=" " ind2=" ">
>    <subfield code="b">c-GenColl</subfield>
>    <subfield code="h">ND547.5.I4</subfield>
>    <subfield code="i">I52 1995</subfield>
>    <subfield code="t">Copy 1</subfield>
>    <subfield code="w">BOOKS</subfield>
>  </datafield>
></record></zs:recordData><zs:recordPosition>1</zs:recordPosition></zs:record></zs:records></zs:searchRetrieveResponse>
>
>
>Thanks
>
>Glenn
+++ Rick ---

West Wind Technologies
Maui, Hawaii

west-wind.com/
West Wind Message Board
Rick's Web Log
Markdown Monster
---
Making waves on the Web

Where do you want to surf today?
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform