全部, 我想创建一个肥皂信封xml文档,例如
<soap:Envelope soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding" xmlns:soap="http://www.w3.org/2001/12/soap-envelope"></soap:Envelope>
我正在使用System.Xml.Linq
执行此操作,但我无法弄清楚如何将soap
前缀添加到encodingStyle
属性。
到目前为止,我有这个:
XNamespace ns = XNamespace.Get("http://www.w3.org/2001/12/soap-envelope");
XAttribute prefix = new XAttribute(XNamespace.Xmlns + "soap", ns);
XAttribute encoding = new XAttribute("encodingStyle", "http://www.w3.org/2001/12/soap-encoding");
XElement envelope = new XElement(ns + "Envelope", prefix, encoding);
给了我
<soap:Envelope encodingStyle="http://www.w3.org/2001/12/soap-encoding" xmlns:soap="http://www.w3.org/2001/12/soap-envelope"></soap:Envelope>
您使用XAttribute
为元素添加前缀,我可以使用XAttribute
为XAttribute
添加前缀吗?
谢谢,P
答案 0 :(得分:10)
在创建'encodingStyle'XAttribute(使用ns + "encodingStyle"
)时指定命名空间:
XAttribute encoding = new XAttribute(ns + "encodingStyle", "http://www.w3.org/2001/12/soap-encoding");
two-parameter XAttribute constructor将XName
作为第一个参数。这可以通过string
隐式构建(如问题代码中所示),也可以直接通过“string
添加”到XNamespace
来创建XName
(如上所述)。
答案 1 :(得分:1)
您需要将XAttribute的XName与XNamespace结合使用。我知道对了......无论如何试试这个。
XNamespace soap = "http://www.w3.org/2001/12/soap-envelope";
XAttribute encoding = new XAttribute(soap + "encodingStyle",
"http://www.w3.org/2001/12/soap-encoding");
答案 2 :(得分:0)
您需要使用XName.Get
方法来构造带有名称空间的属性名称:
var xName = XName.Get("myAttributeName", "http://www.w3.org/2001/XMLSchema-instance");
var attr = new XAttribute(xName, "myAttributeValue");