我的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>
答案 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() {
}
}