Question

J'espère que quelqu'un peut m'aider avec ça.J'ai un script qui génère un fichier 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>

Mais cela devrait être comme:

<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>

Le XML est généré par le script PHP est comme suit:

$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);

Comment puis-je ajouter le XSI: nil="vrai" à un élément XML?

Quelqu'un peut-il m'aider s'il vous plaît?Et comment puis-je définir un type d'élément XML, comme entier, la chaîne, etc.

Était-ce utile?

La solution

Si vous avez besoin d'un espace de noms, vous devez écrire un préfixe de l'espace de noms + le nom de l'attribut ("préfixe: nom") comme premier paramètre et uri comme troisième.

Exemple de code:

 <?php
   $xml = new SimpleXMLElement("<packagedElement></packagedElement>");
   $xml->addAttribute("xsi:nil", "true", "http://www.w3.org/2001/XMLSchema-instance"); 
   echo $xml->asXml();
 ?>

sortie:

<packagedElement xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"></packagedElement>

EDIT:

Dans votre cas: (essayez ceci)

changer

 $customer->addChild('ID');

à

 $customer->addChild('ID')->addAttribute("xsi:nil", "true");

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top