Мне нужно использовать службу 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"}}}