1

Hi guys i'm trying to get all artist from this XML:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<metadata created="2015-02-03T04:03:18.468Z"
    xmlns="http://musicbrainz.org/ns/mmd-2.0#"
    xmlns:ext="http://musicbrainz.org/ns/ext#-2.0">
    <artist-list count="6310" offset="0">
        <artist id="d51955f3-df06-432c-a90d-0308f3c48273" type="Person" ext:score="100">
            <name>Paul Smith</name>
            <sort-name>Smith, Paul</sort-name>
            <gender>male</gender>
            <country>US</country>
            <area id="489ce91b-6658-3307-9877-795b68554c98">
                <name>United States</name>
                <sort-name>United States</sort-name>
            </area>
            <begin-area id="82f3a697-ba65-404d-a1ed-360147af7d10">
                <name>San Diego</name>
                <sort-name>San Diego</sort-name>
            </begin-area>
            <end-area id="ae0110b6-13d4-4998-9116-5b926287aa23">
                <name>California</name>
                <sort-name>California</sort-name>
            </end-area>
            <disambiguation>jazz pianist, composer, arranger and bandleader</disambiguation>
            <life-span>
                <begin>1922-04-17</begin>
                <end>2013-06-29</end>
                <ended>true</ended>
            </life-span>
            <alias-list>
                <alias sort-name="Smith, Paul T.">Paul T. Smith</alias>
            </alias-list>
        </artist>
        <artist id="443ead81-02ce-4136-a759-71453184c002" type="Person" ext:score="100">
            <name>Paul Smith</name>
            <sort-name>Smith, Paul</sort-name>
            <gender>male</gender>
            <country>US</country>
            <area id="489ce91b-6658-3307-9877-795b68554c98">
                <name>United States</name>
                <sort-name>United States</sort-name>
            </area>
            <begin-area id="f83bde89-c84a-4846-a89a-d5d0874e9ddc">
                <name>Calumet</name>
                <sort-name>Calumet</sort-name>
            </begin-area>
            <end-area id="6db2e45d-d7f3-43da-ac0b-7ba5ca627373">
                <name>Glendale</name>
                <sort-name>Glendale</sort-name>
            </end-area>
            <disambiguation>film and television composer, Disney Legends honoree</disambiguation>
            <life-span>
                <begin>1906-10-30</begin>
                <end>1985-01-25</end>
                <ended>true</ended>
            </life-span>
            <alias-list>
                <alias sort-name="Smith, Paul J.">Paul J. Smith</alias>
            </alias-list>
        </artist>
        <artist id="fac3e6c4-6d3c-4086-a590-95e4a057ac42" ext:score="95">
            <name>Paul Smith</name>
            <sort-name>Paul Smith</sort-name>
            <disambiguation>Banjo</disambiguation>
            <life-span>
                <ended>false</ended>
            </life-span>
        </artist>
        <artist id="8ffc42c7-4083-4435-b91c-6ddf4095eeb3" ext:score="95">
            <name>Paul Smith</name>
            <sort-name>Smith, Paul</sort-name>
            <country>US</country>
            <area id="489ce91b-6658-3307-9877-795b68554c98">
                <name>United States</name>
                <sort-name>United States</sort-name>
            </area>
            <disambiguation>American soul artist</disambiguation>
            <life-span>
                <ended>false</ended>
            </life-span>
        </artist>
        <artist id="2f727018-1e83-4797-8433-32c8b99dd057" type="Person" ext:score="94">
            <name>Paul Smith</name>
            <sort-name>Smith, Paul</sort-name>
            <gender>male</gender>
            <country>GB</country>
            <area id="8a754a16-0027-3a29-b6d7-2b40ea0481ed">
                <name>United Kingdom</name>
                <sort-name>United Kingdom</sort-name>
            </area>
            <disambiguation>of Maxïmo Park</disambiguation>
            <life-span>
                <begin>1979-03-13</begin>
                <ended>false</ended>
            </life-span>
        </artist>
        <artist id="e44ae2fa-9367-4691-bdb7-d097446ee3ce" type="Person" ext:score="94">
            <name>Paul Smith</name>
            <sort-name>Smith, Paul</sort-name>
            <disambiguation>Gabba/Acid techno artist</disambiguation>
            <life-span>
                <ended>false</ended>
            </life-span>
        </artist>
        <artist id="32c7cf45-867e-4076-a24c-ba38dccaa7bd" type="Person" ext:score="94">
            <name>Paul Smith</name>
            <sort-name>Smith, Paul</sort-name>
            <country>US</country>
            <area id="489ce91b-6658-3307-9877-795b68554c98">
                <name>United States</name>
                <sort-name>United States</sort-name>
            </area>
            <disambiguation>American folk artist</disambiguation>
            <life-span>
                <ended>false</ended>
            </life-span>
        </artist>
        <artist id="bb57b210-bf27-4af1-8561-600f131bfc81" type="Person" ext:score="94">
            <name>Paul Smith</name>
            <sort-name>Smith, Paul</sort-name>
            <disambiguation>drum n bass producer aka Spinback</disambiguation>
            <life-span>
                <ended>false</ended>
            </life-span>
        </artist>
        <artist id="35287ce6-2fd4-41af-9248-d07e84eeb0df" type="Person" ext:score="94">
            <name>Paul Smith</name>
            <sort-name>Smith, Paul</sort-name>
            <disambiguation>Contemporary Christian artist peformed with The Imperials</disambiguation>
            <life-span>
                <ended>false</ended>
            </life-span>
        </artist>
        <artist id="6ece7fa3-c397-48a6-99f7-05e900b73d81" type="Person" ext:score="82">
            <name>Nicholas Paul Smith</name>
            <sort-name>Smith, Nicholas Paul</sort-name>
            <gender>male</gender>
            <life-span>
                <ended>false</ended>
            </life-span>
        </artist>
        <artist id="3c1fbcf7-4bb8-49ac-8d35-3f4ee8b71e0a" type="Person" ext:score="79">
            <name>Paul Smith</name>
            <sort-name>Smith, Paul</sort-name>
            <gender>male</gender>
            <country>US</country>
            <area id="489ce91b-6658-3307-9877-795b68554c98">
                <name>United States</name>
                <sort-name>United States</sort-name>
            </area>
            <disambiguation>recording engineer, David "Honeyboy" Edwards recordings</disambiguation>
            <life-span>
                <ended>false</ended>
            </life-span>
        </artist>
        <artist id="24e472f9-6003-4873-aac5-c79763105a51" type="Person" ext:score="79">
            <name>Paul Smith</name>
            <sort-name>Smith, Paul</sort-name>
            <gender>male</gender>
            <country>GB</country>
            <area id="8a754a16-0027-3a29-b6d7-2b40ea0481ed">
                <name>United Kingdom</name>
                <sort-name>United Kingdom</sort-name>
            </area>
            <disambiguation>UK drummer</disambiguation>
            <life-span>
                <ended>false</ended>
            </life-span>
        </artist>
        <artist id="662c9cd6-73e2-426f-8e76-a8f2a8233215" type="Person" ext:score="79">
            <name>Paul Smith</name>
            <sort-name>Smith, Paul</sort-name>
            <country>AU</country>
            <area id="106e0bec-b638-3b37-b731-f53d507dc00e">
                <name>Australia</name>
                <sort-name>Australia</sort-name>
            </area>
            <disambiguation>Australian bassist for Laughing Clowns/Ed Kuepper</disambiguation>
            <life-span>
                <ended>false</ended>
            </life-span>
        </artist>
        <artist id="0e911646-290a-4345-b3dc-e5ca91faaf88" type="Person" ext:score="79">
            <name>Paul Smith</name>
            <sort-name>Smith, Paul</sort-name>
            <gender>male</gender>
            <country>GB</country>
            <area id="8a754a16-0027-3a29-b6d7-2b40ea0481ed">
                <name>United Kingdom</name>
                <sort-name>United Kingdom</sort-name>
            </area>
            <disambiguation>British a cappella singer</disambiguation>
            <life-span>
                <ended>false</ended>
            </life-span>
        </artist>
        <artist id="75ffe808-187a-4488-8c84-7467efa2b277" type="Person" ext:score="79">
            <name>Paul Smith</name>
            <sort-name>Smith, Paul</sort-name>
            <disambiguation>of Dengue Fever</disambiguation>
            <life-span>
                <ended>false</ended>
            </life-span>
        </artist>
        <artist id="79d145cb-d862-487d-a340-b723a7c8eb26" type="Person" ext:score="79">
            <name>Paul Smith</name>
            <sort-name>Smith, Paul</sort-name>
            <country>GB</country>
            <area id="8a754a16-0027-3a29-b6d7-2b40ea0481ed">
                <name>United Kingdom</name>
                <sort-name>United Kingdom</sort-name>
            </area>
            <disambiguation>Scottish electronic artist performing as Reverbaphon</disambiguation>
            <life-span>
                <ended>false</ended>
            </life-span>
        </artist>
        <artist id="1f483d17-7510-44d1-95a7-8c16c53c57a1" type="Person" ext:score="79">
            <name>Paul Smith</name>
            <sort-name>Smith, Paul</sort-name>
            <country>US</country>
            <area id="489ce91b-6658-3307-9877-795b68554c98">
                <name>United States</name>
                <sort-name>United States</sort-name>
            </area>
            <disambiguation>US underground hip hop MC Breeze Brewin, of Weatherman, Def Jux</disambiguation>
            <life-span>
                <ended>false</ended>
            </life-span>
        </artist>
        <artist id="76e04e2a-e440-4729-8036-59928521c677" type="Person" ext:score="79">
            <name>Paul Smith</name>
            <sort-name>Smith, Paul</sort-name>
            <gender>male</gender>
            <country>US</country>
            <area id="489ce91b-6658-3307-9877-795b68554c98">
                <name>United States</name>
                <sort-name>United States</sort-name>
            </area>
            <disambiguation>sound engineer, Randy Crawford &amp; Joe Sample recordings</disambiguation>
            <life-span>
                <ended>false</ended>
            </life-span>
        </artist>
        <artist id="7a81a64e-4fdc-44a8-b33b-a447c611cf33" type="Group" ext:score="76">
            <name>The Paul Smith Trio</name>
            <sort-name>Paul Smith Trio, The</sort-name>
            <life-span>
                <ended>false</ended>
            </life-span>
        </artist>
        <artist id="7b458c24-ce5b-4b77-a1dc-616ff53d1e70" type="Group" ext:score="76">
            <name>The Paul Smith Quartet</name>
            <sort-name>Paul Smith Quartet, The</sort-name>
            <country>US</country>
            <area id="489ce91b-6658-3307-9877-795b68554c98">
                <name>United States</name>
                <sort-name>United States</sort-name>
            </area>
            <life-span>
                <ended>false</ended>
            </life-span>
        </artist>
        <artist id="1c86fcf3-b56c-4427-856b-344d898abc33" ext:score="76">
            <name>Paul Gerard Smith</name>
            <sort-name>Smith, Paul Gerard</sort-name>
            <life-span>
                <ended>false</ended>
            </life-span>
        </artist>
        <artist id="e5fcb860-3210-4721-a44f-7bd3dcb4b5d5" ext:score="76">
            <name>Paul Joseph Smith</name>
            <sort-name>Paul Joseph Smith</sort-name>
            <life-span>
                <ended>false</ended>
            </life-span>
        </artist>
        <artist id="3eedd38b-f7ca-43d2-b635-adc4ad95371b" type="Person" ext:score="74">
            <name>Margaret Thatcher</name>
            <sort-name>Thatcher, Margaret</sort-name>
            <gender>female</gender>
            <country>GB</country>
            <area id="8a754a16-0027-3a29-b6d7-2b40ea0481ed">
                <name>United Kingdom</name>
                <sort-name>United Kingdom</sort-name>
            </area>
            <life-span>
                <begin>1925-10-13</begin>
                <end>2013-04-08</end>
                <ended>true</ended>
            </life-span>
            <tag-list>
                <tag count="1">
                    <name>politician</name>
                </tag>
                <tag count="1">
                    <name>non-musician</name>
                </tag>
            </tag-list>
        </artist>
        <artist id="646c86db-d0af-403e-bef9-3deafd9c3d43" type="Person" ext:score="74">
            <name>Brad Thatcher</name>
            <sort-name>Thatcher, Brad</sort-name>
            <life-span>
                <ended>false</ended>
            </life-span>
        </artist>
        <artist id="b5425c52-3e9c-4144-9467-eaa4d69389b8" type="Person" ext:score="74">
            <name>Jim Thatcher</name>
            <sort-name>Thatcher, Jim</sort-name>
            <life-span>
                <ended>false</ended>
            </life-span>
            <alias-list>
                <alias sort-name="Thatcher, James" type="Legal name">James Thatcher</alias>
            </alias-list>
        </artist>
    </artist-list>
</metadata>

but all that i get is an empty array.

this is my code:

<!doctype html>
<html>
<head>
<body>
<meta charset="utf-8">
<title>XML: Descrizione, Immagine, Link a Discogs</title>
</head>
<body>
<?php 
$bb = "Paul Thatcher Smith"; //Example.
$name = strtolower(str_replace(" ","%20",$bb)); //all whitespaces must be coded with %20
$html = "http://musicbrainz.org/ws/2/artist/?query=".$name;

if (($response_xml_data = file_get_contents($html))===false){
    echo "Error fetching XML\n";
} 
else {
   libxml_use_internal_errors(true);
   $data = new SimpleXmlElement($response_xml_data); //all ok, you can do an echo, xml is well formed
   $data->registerXPathNamespace('c',$html); //according to w3s
   if (!$data) { //always have this error -.-
       echo "Error loading XML\n";
       foreach(libxml_get_errors() as $error) {
           echo "\t", $error->message;
       }
   } 
   else {
        $xpath='//c:artist'; //simple xpath query, if i put //* it gives me all xml
        print_r($result = $data->xpath($xpath)); 
        foreach ($result as $artist){
            echo $artist . "<br>";
        }
    }
}
?>

3
  • instead of comment, edit your question to clarify it and delete the comment Commented Feb 2, 2015 at 16:07
  • done any basic debugging, like checking if file_get_contents() actually succeeds? If it fails, it'll return boolean false, which would be loaded by simplexml as an empty string. Commented Feb 2, 2015 at 16:26
  • @MarcB if i put $xpath='//*' it gives me all xml, so no problem there :/ Is an xpath problem. Commented Feb 2, 2015 at 16:35

1 Answer 1

2

This line is incorrect:

$data->registerXPathNamespace('c',$html); 

$html is the URL that you are querying, but in this line you need to specify the namespace of the XML you are using. That namespace is:

http://musicbrainz.org/ns/mmd-2.0#

So use this:

$data->registerXPathNamespace('c','http://musicbrainz.org/ns/mmd-2.0#'); 
Sign up to request clarification or add additional context in comments.

3 Comments

ok, it works! now i have ` $xpath='//c:artist[1]'; print_r( $result = $data->xpath($xpath)); $result = reset($result); echo $result->name; ` because i can't get it with $xpath='//c:artist/name any advice? p.s. TY man, you saved me :P
@Blink It would be //c:artist/c:name, or I would recommend using /*/c:artist-list/c:artist/c:name. It's a good idea to avoid using // when possible.
if i could i would give you a +10! Thank you!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.