0

誰かがこれで私を助けてくれることを願っています。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>

PHP スクリプトによって生成される 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 要素の型を定義するにはどうすればよいですか。

4

1 に答える 1

2

名前空間が必要な場合は、名前空間のプレフィックス + 属性の名前 ("prefix:name") を最初のパラメーターとして記述し、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");
于 2012-07-25T12:38:46.713 に答える