我需要使用一个SOAP服务,该服务接受如下xml属性:
**
<typ:extra-xml>
<declare name="user.fqdn"/>
<set-var name="user.fqdn">uid=yyyy,cn=users,dc=xxx,dc=com</set-var>
<declare name="user.name"/>
</typ:extra-xml>
**
当我在Visual Studio中添加服务引用时,服务中的reference.cs
文件
extra-xml属性看起来像那样。
[System.Xml.Serialization.XmlElementAttribute("extra-xml", Order=82)]
public System.Xml.XmlElement extraxml {
get {
return this.extraxmlField;
}
set {
this.extraxmlField = value;
this.RaisePropertyChanged("extraxml");
}
}
我的客户代码是:
request.ExtraXml = GetElement(userCode);
private static XmlElement GetElement(string userCode)
{
XmlDocument doc = new XmlDocument();
XmlElement document = doc.CreateElement("extra-xml", doc.BaseURI);
XmlElement node1 = doc.CreateElement("declare");
node1.SetAttribute("name", "user.fqdn");
XmlElement node2 = doc.CreateElement("set-var");
node2.SetAttribute("name", "user.fqdn");
node2.InnerText = String.Format("uid={0},cn=users,dc=xxx,dc=com", userCode);
XmlElement node3 = doc.CreateElement("declare");
node3.SetAttribute("name", "user.name");
document.AppendChild(node1);
document.AppendChild(node2);
document.AppendChild(node3);
doc.AppendChild(document);
return doc.DocumentElement;
}
调用该服务后,结果如下所示
{"extraxml":{"extra-xml":{"declare":[{"@name":"user.fqdn"},{"@name":"user.name"}],"set-var":{"@name":"user.fqdn","#text":"uid=yyy,cn=users,dc=xxx,dc=com"}}}}
是否可以删除"extraxml"
:
所以结果应该是
{"extra-xml":{"declare":[{"@name":"user.fqdn"},{"@name":"user.name"}],"set-var":{"@name":"user.fqdn","#text":"uid=yyy,cn=users,dc=xxx,dc=com"}}}