2013-03-26 63 views
0

这是我的链接,以获得XML文件: - XML LINK从XML文件中删除Name空间,并保存为新的XML

这是我的代码: -

<?php 
function convertNodeValueChars($node) { 
    if ($node->hasChildNodes()) { 
     foreach ($node->childNodes as $childNode) { 
     if ($childNode->nodeType == XML_TEXT_NODE) { 
      $childNode->nodeValue = iconv('utf-8', 'ascii//TRANSLIT', $childNode->nodeValue); 
     } 
     convertNodeValueChars($childNode);   
     } 
    }  
    } 

    $doc = new DOMDocument(); 
    $doc->load('http://services.gisgraphy.com/geoloc/search?lat=13o6&lng=80o12&radius=7000'); 
    convertNodeValueChars($doc->documentElement); 
    $doc->save('general.xml'); 
?> 

1)本人试图删除ASCII字符为普通字符
2)要删除XML文件,这是的名称 - 空间包含名称空间<results xmlns="http://gisgraphy.com">
3)要保存为另一个XML文件

+1

这个答案有你需要的东西:http://stackoverflow.com/a/10736557/18771 – Tomalak 2013-03-26 10:10:13

+0

@Tomalak没有这不是有用的。我想删除使用PHP – 2013-03-26 10:39:23

+0

PHP中有XSLT支持。它会花费你10行代码的顺序来使它工作。 – Tomalak 2013-03-26 10:54:17

回答

1

简单的PHP文件第一次创建加载XML从URL: -

<?php 
$dom = new DOMDocument(); 
$dom->load('http://services.gisgraphy.com/geoloc/search?lat=22.298569900000000000&lng=70.794301799999970000&radius=7000', true); 
$dom->save('filename.xml'); 
?> 

然后创建一个XSLT文件: -

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:output method="xml" version="1.0" encoding="UTF-8" /> 
     <xsl:template match="*"> 
       <xsl:element name="{local-name()}"> 
         <xsl:apply-templates select="@* | node()"/> 
       </xsl:element> 
     </xsl:template> 
</xsl:stylesheet> 

,并创建一个PHP文件来加载XML文件,并实现我们的XSLT文件: -

<?php 
$sourcedoc->load('filename.xml'); 
    $stylesheet = new DOMDocument(); 
    $stylesheet->load('new4convert.xsl'); 
    // create a new XSLT processor and load the stylesheet 
    $xsltprocessor = new XSLTProcessor(); 
    $xsltprocessor->importStylesheet($stylesheet); 

    // save the new xml file 
    file_put_contents('filename.xml', $xsltprocessor->transformToXML($sourcedoc)); 
?> 

如果您想要在一个PHP文件中全部输入最终总代码: -

<?php 
$dom = new DOMDocument(); 
$dom->load('http://services.gisgraphy.com/geoloc/search?lat=22.298569900000000000&lng=70.794301799999970000&radius=7000', true); 
$dom->save('filename.xml'); 
$sourcedoc = new DOMDocument(); 
    $sourcedoc->load('filename.xml'); 
    $stylesheet = new DOMDocument(); 
    $stylesheet->load('new4convert.xsl'); 
    // create a new XSLT processor and load the stylesheet 
    $xsltprocessor = new XSLTProcessor(); 
    $xsltprocessor->importStylesheet($stylesheet); 

    // save the new xml file 
    file_put_contents('filename.xml', $xsltprocessor->transformToXML($sourcedoc)); 
?>