簡體   English   中英

如何在PHP中為XML設置默認名稱空間

[英]How to set default namespace for XML in PHP

我有一些XML,需要為其設置名稱空間。 這是我嘗試的方法:

$classXML = "<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><SystemDat>2015-12-03</SystemDat><TimeStamp>19:33:50.12</TimeStamp><ProdMasterVer>0</ProdMasterVer></CalcIdent><CalcParam><CalcDat>2015-12-03</CalcDat><PPPriceDat>2015-11-01</PPPriceDat><NumbersOfLbrRt Val=\"1\"/><CountryCdISO>203</CountryCdISO><LngCdISO>CS</LngCdISO><ManufacturerTimeBase>5</ManufacturerTimeBase><TimeBase Unit=\"WU/h\" Val=\"10\"/><TimeBaseDtl><DecNo Val=\"1\"/></TimeBaseDtl><UcsWoMat>true</UcsWoMat><AZTCalcPrepCd>0</AZTCalcPrepCd><SGNFlag>1</SGNFlag><PPPriceDatMaster>2015-11-01</PPPriceDatMaster><MaintCd>M</MaintCd><CurDtl><ISO>CZK</ISO><DecNo Val=\"2\"/><Desc>CZK</Desc></CurDtl><RecordId>7</RecordId></CalcParam><Vehicle><VehicleIdentification><VIN>12365478965412365</VIN><ManufacturerCodeAX>07</ManufacturerCodeAX><ManufacturerName>ALFA ROMEO</ManufacturerName><ModelCodeAX>25</ModelCodeAX><ModelName>SPIDER</ModelName><SubModelCodeAX>52</SubModelCodeAX><SubModelName>EXCLUSIVE</SubModelName><ModelCdAXIntern>07</ModelCdAXIntern></VehicleIdentification><VehicleModelOptions><Known><ModelOptionDetail><MO>W3</MO><MODesc>3-DVEŘOVÉ (COUPE)</MODesc><MOSrcCd>1</MOSrcCd><MOPrtCd>0</MOPrtCd><MOFncCd>Z0</MOFncCd><MOGrpCd>100</MOGrpCd></ModelOptionDetail></Known></VehicleModelOptions></Vehicle></GlobalData><CalcData><RunDesc>NormalCalc</RunDesc><FinalCalc><GrandTotal><RepTaxDtl></RepTaxDtl><TotTaxDtl></TotTaxDtl><TaxPC Unit=\"%\" Val=\"+21.0\"/></GrandTotal><FCRepTot><RepTotTaxDtl></RepTotTaxDtl></FCRepTot><FCPart><FCSundry></FCSundry></FCPart><FCLabor></FCLabor><FCAdditionalCost></FCAdditionalCost><FCPaint></FCPaint></FinalCalc><SpareParts></SpareParts><Labor></Labor><ExplanatoryTexts><ExplTxt><Desc>CENY ND = NCDV</Desc><Desc>* = ÚDAJE UŽIVATELE</Desc></ExplTxt><ExplTxt><Desc>NN = NEEXISTUJE Č ND / Č PRAC-POZ</Desc><Desc>Č. ND NEMUSÍ BÝT OBJEDNACÍM Č</Desc></ExplTxt><ExplTxt><Desc>)=ČAS-JEDNOTKY V JINÉ POZICI OBSAŽENY</Desc><Desc>ZAX = ČAS-NORMU ZAJISTIL AUDATEX</Desc></ExplTxt></ExplanatoryTexts><CalcControl></CalcControl></CalcData></CLASSXml>";
$classXML=simplexml_load_string($classXML);
$classXML->setAttributeNS('http://www.w3.org/2000/xmlns/' ,'xmlns:g', 'http://base.google.com/ns/1.0');
print_r($classXML);

但是我遇到錯誤

SimpleXMLElement :: setAttributeNS()

之后,我嘗試通過DOM加載XML,例如:

$doc = new DOMDocument();
$doc->loadXML($classXML);
$classXML->setAttributeNS('http://www.w3.org/2000/xmlns/' ,'xmlns:g', 'http://base.google.com/ns/1.0');

結果相同。 大家如何在PHP中為我加載的XML設置名稱空間?

結果應如下所示:

<g:CLASSXml><g:CalculationIndex><g:RunDesc>NormalCalc</g:RunDesc></g:CalculationIndex><g:GlobalData><g:CalcIdent>...and so on

感謝您的任何建議Andurit

$doc = new DOMDocument();
$doc->loadXML($classXML);
$rootNode = $doc->documentElement; // getting root node
$rootNode->setAttributeNS('http://www.w3.org/2000/xmlns/' ,'xmlns:g', 'http://base.google.com/ns/1.0');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM