WCF XmlElement不必要的根元素问题

时间:2019-02-13 21:24:23

标签: xmlelement

我需要使用一个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"}}}

0 个答案:

没有答案