将XML <element>中所有元素的名称更改为<ns2:element>

时间:2015-12-08 09:20:34

标签: xml

我从webservice获取XML,如下所示:

<CLASSXml>
    <CalculationIndex>
        <RunDesc>NormalCalc</RunDesc>
    </CalculationIndex>
    <GlobalData>
        <CalcIdent>
            <CalcUId>CLASS:20151203:19335012:000000000000:203:CS:CZK:349074</CalcUId>
            <CalcNo>2454307111</CalcNo>
            <CustomNo>349074</CustomNo>
            <CalcVer>2300</CalcVer>
            <XMLVer>23.00.01</XMLVer>
            <ClassBuild>23.00.04.03</ClassBuild>
            <SAXIFVersion>6.2</SAXIFVersion>

(实际情况要长得多)

所以一般来说,它是在父元素上有多个子元素和子元素的子元素。

我需要更改此XML中每个元素的名称,例如<CalculationIndex><RunDesc><CLASSXml>等等,然后添加ns2:之前在这种情况下<ns2:CalculationIndex><ns2:RunDesc><ns2:CLASSXml>

有没有办法如何预先处理整个XML并在&lt;之间编辑每个部分的名称? &GT;通过在它之前添加一些字符串?

1 个答案:

答案 0 :(得分:0)

一个简单的解决方案是使用$xml = str_replace('<CalculationIndex>', '<ns2:CalculationIndex>', $xml); $xml = str_replace('</CalculationIndex>', '</ns2:CalculationIndex>', $xml); // etc. 来更改所需的元素:

$xml = preg_replace('/<(.+)>/', '<ns2:$1>', $xml);
$xml = preg_replace('/<\/(.+)>/', '</ns2:$1>', $xml);

编辑:或者如果有许多元素,您可以使用正则表达式:

<init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/applicationContext.xml</param-value>
    </init-param>