2013-03-26 23 views
0

это моя ссылка, чтобы получить XML-файл: - XML LINKудалить пространство имен из XML-файла и сохранить как новый 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 Char в обычной Чару
2) хочет удалить пространство имен из XML-файла это содержит имя-пространство <results xmlns="http://gisgraphy.com">
3) хочет сохранить как другой XML-файл

+1

Этот ответ содержит то, что вам нужно: http://stackoverflow.com/a/10736557/18771 – Tomalak

+0

@Tomalak нет, это не полезно. Я хочу удалить с помощью php –

+0

В PHP есть поддержка XSLT. Это будет стоить вам порядка 10 строк кода, чтобы заставить его работать. – Tomalak

ответ

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)); 
?> 
Смежные вопросы