新的SimpleXMLElement不喜欢冒号

时间:2017-02-20 13:22:02

标签: php xml php-5.6

我的PHP代码是

<?php
$envelopeXML = new SimpleXMLElement('<s:Envelope></s:Envelope>');
$envelopeXML->addAttribute('xmlns:s', 'http://www.w3.org/2003/05/soap-envelope');
Header('Content-type: text/xml');
echo $envelopeXML->asXML();

它给了我警告:

  

警告:SimpleXMLElement :: __ construct():名称空间错误:信封上的名称空间前缀s未在第2行的xml.php中定义

如何在'Envelope'上定义命名空间前缀's'?像这样:

<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
    <s:Header>
        <a:Action s:mustUnderstand="1">http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/Issue</a:Action>

1 个答案:

答案 0 :(得分:0)

只要符合有效的XML规则,您就可以直接在XML变量本身中定义命名空间:

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//

package foo;

import javax.xml.bind.annotation.XmlAttribute;

public class Bar {
    @XmlAttribute(
        name = "qux"
    )
    public String qux;
    @XmlAttribute(
        name = "baz",
        required = false,
        namespace = "##default"
    )
    public String baz;

    public Bar() {
    }
}
相关问题