如何爲我的XML的每個元素添加前綴。如何爲XML的每個元素添加前綴
所以一般從這樣的XML:
<CLASSXml>
<CalculationIndex>
<RunDesc>NormalCalc</RunDesc>
</CalculationIndex>
<GlobalData>
<CalcIdent>
<CalcUId>CLASS:20160105:09411486:000007773000:203:CS:CZK:349074</CalcUId>
<CalcNo>2454307119</CalcNo>
<CustomNo>349074</CustomNo>
<CalcVer>2300</CalcVer>
<XMLVer>23.00.01</XMLVer>
<Detail>
<Current>1123</Current>
<Last>1152</Last>
</Detail>
<ClassBuild>23.00.04.03</ClassBuild>
<SAXIFVersion>6.2</SAXIFVersion>
<SystemDat>2016-01-05</SystemDat>
<TimeStamp>09:41:14.86</TimeStamp>
<ProdMasterVer>0</ProdMasterVer>
</CalcIdent>
</GlobalData>
</CLASSXml>
做這樣的事情:
<ns2:CLASSXml>
<ns2:CalculationIndex>
<ns2:RunDesc>NormalCalc</ns2:RunDesc>
</ns2:CalculationIndex>
<ns2:GlobalData>
<ns2:CalcIdent>
<ns2:CalcUId>CLASS:20160105:09411486:000007773000:203:CS:CZK:349074</ns2:CalcUId>
<ns2:CalcNo>2454307119</ns2:CalcNo>
<ns2:CustomNo>349074</ns2:CustomNo>
<ns2:CalcVer>2300</ns2:CalcVer>
<ns2:XMLVer>23.00.01</ns2:XMLVer>
<ns2:Detail>
<ns2:Current>1123</ns2:Current>
<ns2:Last>1152</ns2:Last>
</ns2:detail>
<ns2:ClassBuild>23.00.04.03</ns2:ClassBuild>
<ns2:SAXIFVersion>6.2</ns2:SAXIFVersion>
<ns2:SystemDat>2016-01-05</ns2:SystemDat>
<ns2:TimeStamp>09:41:14.86</ns2:TimeStamp>
<ns2:ProdMasterVer>0</ns2:ProdMasterVer>
</ns2:CalcIdent>
</ns2:GlobalData>
</ns2:CLASSXml>
我知道有可能做這樣的事情與str_replace函數(如下面的例子),但如果XML變成500行長或類似的東西,那麼這些代碼就是無用的代碼。
任何想法如何做到這一點很簡單?
public function addNameSpace($xml) {
$xml = str_replace('<CLASSXml>', '<ns2:CLASSXml>', $xml);
$xml = str_replace('</CLASSXml>', '</ns2:CLASSXml>', $xml);
$xml = str_replace('<CalculationIndex>', '<ns2:CalculationIndex>', $xml);
$xml = str_replace('</CalculationIndex>', '</ns2:CalculationIndex>', $xml);
// What to do?
}
這工作嗎? – Vegeta
嗨@Vegeta,謝謝你的回答,正則表達式可能真的有幫助。 但是,如果我可以有問題2件事 1th - 上面的代碼返回 NormalCalc 所以斜槓是在前綴後面而不是在結束標記之前 2th - 我相信這不適用於具有屬性的元素 我是對嗎? –
Andurit
嗨@Vegeta,真的不需要爲「錯誤」的答案感到抱歉,即使是第一個你帶領我的好方法。我沒有回答,因爲我正在檢查這個。我發現小mystake,也許這導致問題。我們是否可以在聊天中開始討論鐵餅,然後你就回來在這裏編輯答案? 它是爲你準備的嗎? http://chat.stackoverflow.com/rooms/100042/how-to-add-prefix-to-each-element-of-xml – Andurit