http://www.phpbuilder.com/columns/DOM-XML-extension/Octavia_Anghel102710.php3
I open my xml using DOM
I need the subfield element attributes printed along with the datafiels attributes on the same line
<?php
//http://www.phpbuilder.com/columns/DOM-XML-extension/Octavia_Anghel102710.php3
//child nodes http://www.w3schools.com/php/php_xml_dom.asp
//http://books.google.com/books?id=ygQRKDEsLecC&pg=PA196&lpg=PA196&dq=print+php+xml+child+node+attributes&source=bl&ots=TCAhH4kpCt&sig=yJUPXesIkRUrNXdNE9Yr5ul7Wdw&hl=en&ei=U51kTeKQKsL48AbN4MDTBg&sa=X&oi=book_result&ct=result&resnum=10&ved=0CF4Q6AEwCQ#v=onepage&q=print%20php%20xml%20child%20node%20attributes&f=false
//http://stackoverflow.com/questions/4598409/printing-content-of-a-xml-file-using-xml-dom
$doc = new DOMDocument();
$doc->preserveWhiteSpace = FALSE;
$doc->load( 'loc.xml' );
$root = $doc->documentElement;
$type = $root->nodeType;
//print $doc->nodeName."\n";
//print $root->nodeName."\n";
//print $doc->nodeValue."\n";
//print $root->nodeValue."\n";
$librecords = $doc->getElementsByTagName( "record" );
foreach( $librecords as $record ){
$leader = $record->getElementsByTagName( "leader" );
$controlfields = $record->getElementsByTagName( "controlfield" );
$datafields = $record->getElementsByTagName( "datafield" );
$subfields = $record->getElementsByTagName( "subfield" );
$leader = $leader->item(0)->nodeValue;
echo '=LDR '.$leader.'<BR>';
foreach( $controlfields as $controlfield ){
$tag = $controlfield->getAttribute('tag');
$cf_value = $controlfield->firstChild->nodeValue;
echo "=".$tag." ".$cf_value.'<BR>'; }
foreach( $datafields as $datafield ){
$tag = $datafield->getAttribute('tag');
$ind1 = $datafield->getAttribute('ind1');
$ind2 = $datafield->getAttribute('ind2');
if ($ind1 ==" ") {$ind1 = "_";}
if ($ind2 ==" ") {$ind2 = "_";}
echo "=".$tag." ".$ind1.$ind2;
//if($datafield->hasChildNodes()){echo 'This node has children!<br />';}
foreach ($datafield->childNodes AS $item) {
print 'nodeName '.$item->nodeName . " = " . $item->nodeValue." | " ;} //. "<br />"; }
// foreach ($datafield->children() as $node) {
// $arr = $node->attributes(); // returns an array
// print ("code=".$arr["code"]); // get the value of this attribute
// print (" Company=".$node->subfield);
// print ("<p><hr>");
//}
// foreach( $subfields as $subfield){
// foreach($subfield->attributes as $attr){
// $attributes = $subfield->attributes;
// print $attr->nodeName;
// print $attr->nodeValue;
// //print $attributes->nodeName;
//print $attributes->nodeValue;
// print $subfield->nodeName;
// print $subfield->nodeValue;
//}}
// print $item->nodeValue ;
// print $item->attributes("code");
// $valueID = $item->getAttribute('code');
// print $item->nodeName->attributes("code");
// echo $item->nodeValue.getAttribute("code");
// print $item->getAttribute('code')
//http://www.devshed.com/c/a/PHP/Accessing-Attributes-and-Cloning-Nodes-with-the-DOM-XML-Extension-in-PHP-5/1/
echo '<BR>';
}
foreach( $subfields as $subfield ){
$code = $subfield->getAttribute('code');
$sf_value = $subfield->firstChild->nodeValue;
echo '$'.$code.$sf_value.'<BR>'; }
echo '<BR>';
}
?>
this is the xml file
<zs:searchRetrieveResponse xmlns:zs="http://www.loc.gov/zing/srw/"><zs:version>1.1</zs:version><zs:numberOfRecords>2144</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>01026ngm a22002773a 4500</leader>
<controlfield tag="001">16429180</controlfield>
<controlfield tag="005">20100823131409.0</controlfield>
<controlfield tag="007">vffcjaho|</controlfield>
<controlfield tag="008">100823s2010 xxu060 mleng </controlfield>
<datafield tag="906" ind1=" " ind2=" ">
<subfield code="a">0</subfield>
<subfield code="b">cbc</subfield>
<subfield code="c">orignew</subfield>
<subfield code="d">u</subfield>
<subfield code="e">ncip</subfield>
<subfield code="f">20</subfield>
<subfield code="g">y-movingim</subfield>
</datafield>
<datafield tag="955" ind1=" " ind2=" ">
<subfield code="b">qm12 2010-08-23</subfield>
</datafield>
<datafield tag="010" ind1=" " ind2=" ">
<subfield code="a"> 2010608899</subfield>
</datafield>
<datafield tag="017" ind1=" " ind2=" ">
<subfield code="a">PA0001684303</subfield>
<subfield code="b">U.S. Copyright Office</subfield>
</datafield>
<datafield tag="040" ind1=" " ind2=" ">
<subfield code="a">DLC</subfield>
<subfield code="c">DLC</subfield>
<subfield code="e">amim</subfield>
</datafield>
<datafield tag="050" ind1="0" ind2="0">
<subfield code="a">VBU 4599 (viewing copy)</subfield>
</datafield>
<datafield tag="245" ind1="0" ind2="0">
<subfield code="a">30 Rock.</subfield>
<subfield code="p">Emmanuelle goes to Dinosaur Land.</subfield>
</datafield>
<datafield tag="246" ind1="3" ind2="0">
<subfield code="a">Emmanuelle goes to Dinosaur Land</subfield>
</datafield>
<datafield tag="246" ind1="3" ind2=" ">
<subfield code="a">Thirty rock.</subfield>
<subfield code="p">Emmanuelle goes to Dinosaur Land</subfield>
</datafield>
<datafield tag="257" ind1=" " ind2=" ">
<subfield code="a">United States.</subfield>
</datafield>
<datafield tag="260" ind1=" " ind2=" ">
<subfield code="c">2010-05-13.</subfield>
</datafield>
<datafield tag="300" ind1=" " ind2=" ">
<subfield code="a">1 videocassette of 1 (Betacam SP) (60 min.) :</subfield>
<subfield code="b">sd., col. ;</subfield>
<subfield code="c">1/2 in.</subfield>
<subfield code="3">viewing copy.</subfield>
</datafield>
<datafield tag="500" ind1=" " ind2=" ">
<subfield code="a">Episode no. 4021.</subfield>
</datafield>
<datafield tag="500" ind1=" " ind2=" ">
<subfield code="a">Sources used: videocassette container; Copyright catalog online; Copyright description.</subfield>
</datafield>
<datafield tag="655" ind1=" " ind2="0">
<subfield code="a">Situation comedies (Television programs)</subfield>
</datafield>
<datafield tag="655" ind1=" " ind2="0">
<subfield code="a">Fiction television programs.</subfield>
</datafield>
<datafield tag="710" ind1="2" ind2=" ">
<subfield code="a">Copyright Collection (Library of Congress)</subfield>
<subfield code="5">DLC</subfield>
</datafield>
</record></zs:recordData><zs:recordPosition>2</zs:recordPosition></zs:record><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>01718cjm a22003971a 4500</leader>
<controlfield tag="001">13463061</controlfield>
<controlfield tag="005">20051217130827.0</controlfield>
<controlfield tag="007">sd fsngnnmmned</controlfield>
<controlfield tag="008">040120r19961983caurcn eng d</controlfield>
<datafield tag="024" ind1="1" ind2=" ">
<subfield code="a">076744000422</subfield>
</datafield>
<datafield tag="035" ind1=" " ind2=" ">
<subfield code="a">(DLC) 2004567544</subfield>
</datafield>
<datafield tag="040" ind1=" " ind2=" ">
<subfield code="a">KFW</subfield>
<subfield code="c">KFW</subfield>
<subfield code="d">IEP</subfield>
<subfield code="d">OCLCQ</subfield>
<subfield code="d">DLC</subfield>
</datafield>
<datafield tag="020" ind1=" " ind2=" ">
<subfield code="c">$17.98</subfield>
</datafield>
<datafield tag="024" ind1="1" ind2="0">
<subfield code="a">076744000422</subfield>
</datafield>
<datafield tag="028" ind1="0" ind2="2">
<subfield code="a">HIPD 40004</subfield>
<subfield code="b">Hip-O Records</subfield>
</datafield>
<datafield tag="028" ind1="0" ind2="2">
<subfield code="a">40004-2</subfield>
<subfield code="b">Hip-O Records</subfield>
</datafield>
<datafield tag="035" ind1=" " ind2=" ">
<subfield code="a">(OCoLC)ocm35640234 </subfield>
</datafield>
<datafield tag="028" ind1="0" ind2="2">
<subfield code="a">HIPD-40004</subfield>
<subfield code="b">Hip-O Records</subfield>
</datafield>
<datafield tag="010" ind1=" " ind2=" ">
<subfield code="a"> 2004567544</subfield>
</datafield>
<datafield tag="042" ind1=" " ind2=" ">
<subfield code="a">lcderive</subfield>
</datafield>
<datafield tag="050" ind1="0" ind2="0">
<subfield code="a">SDA 85496</subfield>
</datafield>
<datafield tag="245" ind1="0" ind2="4">
<subfield code="a">The '80s hit(s) back!</subfield>
<subfield code="h">[sound recording].</subfield>
</datafield>
<datafield tag="246" ind1="3" ind2=" ">
<subfield code="a">Eighty's hit(s) back!</subfield>
</datafield>
<datafield tag="260" ind1=" " ind2=" ">
<subfield code="a">Universal City, Calif. :</subfield>
<subfield code="b">Hip-O Records,</subfield>
<subfield code="c">p1996.</subfield>
</datafield>
<datafield tag="955" ind1=" " ind2=" ">
<subfield code="a">vn76 2004-01-20 to MBRS/RS</subfield>
<subfield code="e">vn76 2004-01-20 copy 2 to MBRS/RS</subfield>
</datafield>
<datafield tag="985" ind1=" " ind2=" ">
<subfield code="c">OCLC</subfield>
<subfield code="e">srreplace 2005-08</subfield>
</datafield>
</record>
just more and more records here etc....