Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Need some XML parsing help
Message
From
25/03/2005 07:46:28
 
 
To
All
General information
Forum:
Visual FoxPro
Category:
XML, XSD
Title:
Need some XML parsing help
Environment versions
Visual FoxPro:
VFP 9
OS:
Windows XP SP2
Network:
Windows XP
Database:
MS SQL Server
Miscellaneous
Thread ID:
00999113
Message ID:
00999113
Views:
75
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
Next
Reply
Map
View

Click here to load this message in the networking platform