2016-05-26 23 views
6

düğümler niteliklerini, bu yüzden bazı daha fazla açıklamaya ihtiyaç:PHP SoapServer - Bu soru başka bir yerde cevap ama hala o iş yapamaz gördüğüm

örnek verildi:

$tag['_'] = 'yyy'; 
$tag['attr'] = 'xxx'; 
$tagVar = new SoapVar($tag, SOAP_ENC_OBJECT); 

oluşturulan xml olacaktır:

<tag attr="xxx">yyy</tag> 

Ancak, ben

<tag> 
    <_>yyy</_> 
    <attr>xxx</attr> 
</tag> 
alıyorum

Yani, beklendiği gibi çalışmasını sağlamak için başka bir şey gerekiyor mu? SoapServer sınıfında veya WSDL'de bir çeşit yapılandırma bile var mı?

yüzden aslında o şeylerin ile halletmek için ne kadar zor Bu beni şaşırtıyor

<ns:tag attr="xxx">yyy</ns:tag> 

almak için bir yol arıyorum, biraz daha, eleman alanlı olup şeyleri zorlaştırmak için Hem SoapClient hem de SoapServer ve konuyla ilgili soruların çoğunun SO ve başka bir yerde bu soruları cevaplamayan aynı kişi tarafından nasıl cevap verildiği, tabii ki bir çeşit hack veya tuhaf belgelenmemiş davranışlar, saatlerce sonra mücadele.

cevap

2

PHP sabunu işlevi çok kızdı ve bende neyin yanlış olduğunu hiç bulamadım. Verileri SOAP API'sı aracılığıyla zimbraya bağlamayı ve güncellemeyi denedim ve bunun bir çok sorunu vardı. Bu yüzden Orada

böyle XML'inizi inşa edebilirsiniz SimpleXMLElement & Curl :) kullandı: ad için

$xml = new SimpleXMLElement('<soap></soap>'); // create your base 

$xml = $xml->addChild('tag', str_replace('&', '&amp;', 'yyy')); // see addChild in docs 
$xml->attr = 'xxx'; // escaping content rather than addAttribute which does not 

echo $xml->asXML(); // which returns : <tag>yyy<attr>xxx</attr></tag> 

, addChild bir ad argüman var, ancak bu istediğini çıkış yok .. .

$xml = $xml->addChild('tag', str_replace('&', '&amp;', 'yyy'), 'ns'); 
$xml->attr = 'xxx'; 

echo $xml->asXML(); // which returns : <tag>yyy<attr>xxx</attr></tag> 

Not: tarayıcıda çalıştırıyorsanız, htmlspecialchars için yankılanırken :)

+0

Evet, 'addAttribute' yapar yardım unutma. Yine de bazı üst düzey bir çözüm için umuyordum. – alepeino

+0

Bir işleve bir dizi vermek ve bunları yapmasına izin vermek mi istiyorsunuz? – Bobot

+0

Daha sonra bunu elde etmek için FluidXML'i kullanabilirsiniz :) https://github.com/servo-php/fluidxml – Bobot

İlgili konular