2013-12-12 58 views
2

我有以下PHP代碼,我試圖轉換XML文件。如何使用PHP的DOM,XML/XSLT擴展

下面是PHP代碼:

$xmldoc = new DOMDocument(); 
$xmldoc->load('somefile.xml'); 


$xsldoc = new DOMDocument(); 
$xsldoc->load('somexsltfile.xslt'); 

$xslt = new XSLTProcessor(); 
$xslt->importStylesheet($xsldoc); 


$result = $xslt->transformToDoc($xmldoc); 
$result->save('somefile.xml'); 

在運行這個PHP文件我無法加載XML文件。 看起來我需要安裝libxml,libxslt庫,因爲我使用的是XSLTProcessor和DOMDocument。 我的構建服務器使用PHP 5.3.10版本。在php.ini文件中我只看到以下擴展名的加載(內置):

[PHP_GD2] 
extension=php_gd2.dll 
[PHP_OCI8] 
extension=php_oci8.dll 
[PHP_OCI8_11G] 
extension=php_oci8_11g.dll 

但是當我運行「php –m」關於CLI我得到:

[PHP Modules] 
bcmath 
calendar 
com_dotnet 
Core 
ctype 
date 
dom 
ereg 
filter 
ftp 
gd 
hash 
iconv 
json 
libxml 
mcrypt 
mhash 
mysqlnd 
oci8 
odbc 
pcre 
PDO 
Phar 
Reflection 
session 
SimpleXML 
SPL 
standard 
tokenizer 
wddx 
xml 
xmlreader 
xmlwriter 
zip 
zlib 

[Zend Modules] 

所以現在意思呢這些以上列出的擴展可用於我的構建服務器上?如果是,那麼我如何在我的php代碼中訪問它們? 如果沒有,我怎樣才能讓他們安裝在我的編譯機上?這些函數需要哪些dll,這些函數在我的php代碼中使用,例如DOMDocument and XSLTProcessor()函數?

請建議。

在此先感謝!

更新:我安裝的是XSL擴展,我現在看到延長= php_xsl.dll在我的php.ini文件

但是什麼我對DOM文檔嗎?

而且當我運行phpinfo()我看到

DOM/XML => enabled, libXML support => active, XML Support => active, 
XSL => enabled 
libxslt Version => 1.1.23 

所以現在我將如何利用這些擴展對於已啓用的? 感謝

+0

你會得到什麼樣的錯誤? – ThW

+2

不幸的是我看不到任何錯誤,但是我的編譯失敗,沒有錯誤日誌! – Celestial

回答

0

我已經測試了下面的代碼,

$xmlDoc = new DOMDocument(); 
$xmlDoc->load("note.xml"); 
$x = $xmlDoc->documentElement; 
foreach ($x->childNodes AS $item) 
{ 
    print $item->nodeName . " = " . $item->nodeValue . "<br>"; 
} 

而且note.xml如下,

<?xml version="1.0" encoding="UTF-8"?> 
<note> 
    <to>Tove</to> 
    <from>Jani</from> 
    <heading>Reminder</heading> 
    <body>Don't forget me this weekend!</body> 
</note> 

請讓我知道,如果你面對任何困難。