我从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;通过在它之前添加一些字符串?
答案 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>