XSI : NIL="TRUE"가 PHP를 사용하여 XML 요소에 어떻게 추가 할 수 있습니까?
문제
누군가가 나를 도울 수 있기를 바랍니다.XML 파일을 생성하는 스크립트가 있습니다.
<Reeleezee version="1.15" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.reeleezee.nl/taxonomy/1.15 taxonomy\1.15\Reeleezee.xsd" xmlns="http://www.reeleezee.nl/taxonomy/1.15">
<Import>
<CustomerList>
<Customer>
<ID/>
<FullName>Dennis Rijken</FullName>
<SearchName>Dennis Rijken</SearchName>
<Code/>
<DefaultAddress>Office</DefaultAddress>
<LanguageCode>nl</LanguageCode>
<FaxNumber/>
<EmailAddress/>
<WebsiteAddress/>
<Comment/>
<ChamberOfCommerceNumber/>
<ChamberOfCommerceCity/>
<FiscalIdentificationNumber/>
<TaxDepositLHNumber/>
<TaxDepositOBNumber/>
<TaxDepositICLNumber/>
<BankAccountNumber/>
<BranchReference/>
<AddressList>
<Address Type="Office">
<Street>Stuivenes</Street>
<Number>11</Number>
<Zipcode>3911 XX</Zipcode>
<City>Rhenen</City>
<CountryCode>NL</CountryCode>
</Address>
</AddressList>
<ContactPersonList>
<ContactPersonReference/>
</ContactPersonList>
</Customer>
</CustomerList>
</Import>
.
그러나 그것은 다음과 같아야합니다 :
<Customer RlzID="23232.51.8C8D54156584290">
<ID xsi:nil="true" />
<FullName>GPXS</FullName>
<SearchName>GPXS</SearchName>
<Code xsi:nil="true" />
<DefaultAddress>Office</DefaultAddress>
<LanguageCode>nl</LanguageCode>
<PhoneNumber xsi:nil="true" />
<FaxNumber xsi:nil="true" />
<EmailAddress xsi:nil="true" />
<WebsiteAddress xsi:nil="true" />
<Comment xsi:nil="true" />
<ChamberOfCommerceNumber xsi:nil="true" />
<ChamberOfCommerceCity xsi:nil="true" />
<FiscalIdentificationNumber xsi:nil="true" />
<TaxDepositLHNumber xsi:nil="true" />
<TaxDepositOBNumber xsi:nil="true" />
<TaxDepositICLNumber xsi:nil="true" />
<BankAccountNumber xsi:nil="true" />
<BranchReference xsi:nil="true" />
<AddressList>
<Address Type="Office">
<Street>Stephensonstraat</Street>
<Number>19</Number>
<Zipcode>1097 BA</Zipcode>
<City>Amsterdam</City>
<CountryCode>NL</CountryCode>
</Address>
<Address Type="Delivery" xsi:nil="true" />
</AddressList>
<ContactPersonList>
<ContactPersonReference RlzID="23232.89.8CA58ACEACD0560" />
</ContactPersonList>
</Customer>
.
XML은 다음과 같습니다.
$query = "SELECT orders.id AS orderid, DATE_FORMAT(orders.datum, '%d-%m-%Y %k:%i:%s') AS datum, orders.bedrag, debiteur.naam, debiteur.achternaam, debiteur.adres, debiteur.huisnummer, debiteur.toevoeging, debiteur.postcode, debiteur.plaats, debiteur.rek_nummer, debiteur.email
FROM orders
LEFT JOIN debiteur ON orders.debiteur_id = debiteur.id";
$result = mysql_query($query) or die(mysql_error());
$exportXML = new SimpleXMLElement("<Reeleezee></Reeleezee>");
$import = $exportXML->addChild('Import');
$customerlist = $import->addChild('CustomerList');
while($res = mysql_fetch_array($result, MYSQL_ASSOC)){
$customer = $customerlist->addChild('Customer');
$customer->addChild('ID');
$customer->addChild('FullName', $res['naam']." ".$res['achternaam']);
$customer->addChild('SearchName', $res['naam']." ".$res['achternaam']);
$customer->addChild('Code');
$customer->addChild('DefaultAddress', 'Office');
$customer->addChild('LanguageCode', 'nl');
$customer->addChild('FaxNumber');
$customer->addChild('EmailAddress');
$customer->addChild('WebsiteAddress');
$customer->addChild('Comment');
$customer->addChild('ChamberOfCommerceNumber');
$customer->addChild('ChamberOfCommerceCity');
$customer->addChild('FiscalIdentificationNumber');
$customer->addChild('TaxDepositLHNumber');
$customer->addChild('TaxDepositOBNumber');
$customer->addChild('TaxDepositICLNumber');
$customer->addChild('BankAccountNumber');
$customer->addChild('BranchReference');
$addresslist = $customer->addChild('AddressList');
$address = $addresslist->addChild('Address');
$address->addAttribute('Type', 'Office');
$address->addChild('Street', $res['adres']);
$address->addChild('Number', $res['huisnummer']);
$address->addChild('Zipcode', $res['postcode']);
$address->addChild('City', $res['plaats']);
$address->addChild('CountryCode', 'NL');
$contactpersonlist = $customer->addChild('ContactPersonList');
$contactpersonlist->addChild('ContactPersonReference');
}
Header('Content-type: text/xml');
$strxml = $exportXML->asXML();
$root = '<Reeleezee version='.'"1.15"'.' xmlns:xsi='.'"http://www.w3.org/2001/XMLSchema-instance"'.' xsi:schemaLocation='.'"http://www.reeleezee.nl/taxonomy/1.15 taxonomy\1.15\Reeleezee.xsd"'.' xmlns='.'"http://www.reeleezee.nl/taxonomy/1.15"'.'>';
$newxml = str_replace("<Reeleezee>", $root, $strxml);
//echo $newxml;
file_put_contents("test.xml", $newxml);
.
xsi : nil="true"를 XML 요소에 추가 할 수 있습니까?
누군가가 나를 도와 줄 수 있습니까?정수, 문자열 등과 같은 XML 요소 유형을 어떻게 정의 할 수 있습니까?
해결책
네임 스페이스가 필요한 경우, 네임 스페이스의 접두사 ( "접두사 이름")의 이름을 첫 번째 매개 변수와 URI의 이름으로 제 3 매개 변수로 작성해야합니다.
예제 코드 :
<?php
$xml = new SimpleXMLElement("<packagedElement></packagedElement>");
$xml->addAttribute("xsi:nil", "true", "http://www.w3.org/2001/XMLSchema-instance");
echo $xml->asXml();
?>
.
출력 :
<packagedElement xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"></packagedElement>
.
편집 :
귀하의 경우 : (이 시도)
변경
.
$customer->addChild('ID');
~
. $customer->addChild('ID')->addAttribute("xsi:nil", "true");
제휴하지 않습니다 StackOverflow