php5以上でCall to undefined function domxml_new_doc()

domxml_new_docがundefinedと出てしまった。

[vagrant@localhost map]$ php -v
PHP 5.6.27 (cli) (built: Oct 14 2016 14:06:54)

phpのversionは、5.6

php4.0からサポートされているのに何で?と思ったが、以下のようにphp5以上はDOM extensionを使えとのこと。
It will, however, never be released with PHP 5, and will only be distributed with PHP 4. If you need DOM XML support with PHP 5 you can use the DOM extension. This domxml extension is not compatible with the DOM extension.

こちらのDom Object Model
http://us3.php.net/manual/ja/book.dom.php

new DOMDocument(), createElement, appendChild, setAttribute, saveXMLに修正したら問題なく表示されました。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
require("phpsqlajax_dbinfo.php");
 
$doc = new DOMDocument("1.0");
 
$node = $doc->createElement("makers");
$parnode = $doc->appendChild($node);
 
$connection =mysql_connect('localhost', $username, $password);
if (!$connection){
    die('Not connected : ' . mysql_error());
}
 
$db_selected = mysql_select_db($database, $connection);
if (!$db_selected){
    die ('Can\'t use db:' . mysql_error());
}
 
$query = "SELECT * FROM markers WHERE 1";
$result = mysql_query($query);
if(!$result){
    die('Invalid query:' . mysql_error());
}
 
header("Content-type: text/xml");
 
while ($row = @mysql_fetch_assoc($result)){
    $node = $doc->createElement("marker");
    $newnode = $parnode->appendChild($node);
    $newnode->setAttribute("name", $row['address']);
    $newnode->setAttribute("lat", $row['lat']);
    $newnode->setAttribute("lng", $row['lng']);
    $newnode->setAttribute("type", $row['type']);
}
 
$xmlfile = $doc->saveXML();
echo $xmlfile;
?>
1
2
3
4
5
6
7
8
9
10
<makers>
<marker name="580 Darling Street, Rozelle, NSW" lat="-33.861034" lng="151.171936" type="restaurant"/>
<marker name="76 Wilford Street, Newtown, NSW" lat="-33.898113" lng="151.174469" type="bar"/>
<marker name="Greenwood Plaza, 36 Blue St, North Sydney NSW" lat="-33.840282" lng="151.207474" type="bar"/>
<marker name="7A, 2 Huntley Street, Alexandria, NSW" lat="-33.910751" lng="151.194168" type="bar"/>
<marker name="16 Foster Street, Surry Hills, NSW" lat="-33.879917" lng="151.210449" type="bar"/>
<marker name="43 Macpherson Street, Bronte, NSW" lat="-33.906357" lng="151.263763" type="restaurant"/>
<marker name="60-64 Reservoir Street, Surry Hills, NSW" lat="-33.881123" lng="151.209656" type="restaurant"/>
<marker name="60 Riley Street, Darlinghurst, NSW" lat="-33.874737" lng="151.215530" type="restaurant"/>
</makers>