2012-03-28 5 views
1

Was ist bei den beiden XML-Formaten üblich? Und wie würdest du das erste in das zweite Format umwandeln, Regex? Sollte ich überhaupt <subgroupones> haben? Grundsätzlich <tags>, die keine Attribute außer <global> haben, sollte gelöscht werden, oder wenn es einen eleganteren Weg gibt.xml gängige Praxis und Entfernen von Gruppen

<global> 
    <groupone name="bce"> 
     <subgroupones> 
      <subsgroupone name="a" /> 
      <subsgroupone name="b" /> 
      <subsgroupone name="c" /> 
     </subgroupones> 
    <groupone> 
</global> 

<global> 
    <groupone name="bce"> 
      <subsgroupone name="a" /> 
      <subsgroupone name="b" /> 
      <subsgroupone name="c" /> 
    <groupone> 
</global> 

Antwort

2

XML-zu-XML-Konvertierung wird fast immer am besten von Stylesheet Transformation (XSLT) behandelt. PHP hat integrierte Bibliotheken für den Umgang mit XSLT: http://php.net/manual/en/book.xslt.php

Zum Beispiel, hier ist ein XSLT, die nur Elemente kopiert, die Attribute haben (mit Ausnahme von <global> die immer enthalten):

<?xml version="1.0"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:template match="global | @* | node()[@*]"> 
    <xsl:copy><xsl:apply-templates select="@* | node()"/></xsl:copy> 
    </xsl:template> 
</xsl:stylesheet> 

Beispielausgabe (noch nicht sicher, wie man den überschüssigen Raum entfernen):

<?xml version="1.0" encoding="UTF-8"?><global> 
    <groupone name="bce"> 

      <subsgroupone name="a"/> 
      <subsgroupone name="b"/> 
      <subsgroupone name="c"/> 

    </groupone> 
</global> 

Sie können mit diesem Tool experimentieren: http://xslttest.appspot.com/

Verwandte Themen