繁体   English   中英

C#中的soap信封如何添加子节点?

[英]How do I add child node to soap envelope in C#?

要使用 web 服务,我需要在 soapEnvelope 中插入一个子节点,作为 Body 节点的第一个子节点。 在这个节点中,我想导入一个 Xml 文档。 但是,它失败了,无论我做什么,它都会使它成为与我的导入并行的兄弟节点。 我究竟做错了什么? 这里是我的代码(importeddoc是传入的xml文档)

    XmlDocument soapEnvelope = new XmlDocument();
    soapEnvelope.LoadXml("<soapenv:Envelope xmlns:soapenv = 
    \"http://schemas.xmlsoap.org/soap/envelope/\" 
    xmlns:xd=\"http://www.w3.org/2000/09/xmldsig#\"> 
    </soapenv:Envelope>");
    XmlNode headernode = soapEnvelope.CreateNode("element", 
   "soapenv:Header", "http://schemas.xmlsoap.org/soap/envelope/");
    XmlNode bodynode = soapEnvelope.CreateNode("element", 
   "soapenv:Body", "http://schemas.xmlsoap.org/soap/envelope/");
    XmlElement root = soapEnvelope.DocumentElement;
    root.AppendChild(headernode);
    XmlNamespaceManager nsmgr = new 
    XmlNamespaceManager(importeddoc.NameTable);
    nsmgr.AddNamespace("myextranodens", "http://....");
    
    XmlNode containernode = 
    importeddoc.SelectSingleNode("/myimportdata", nsmgr);
    XmlNode importNode = soapEnvelope.ImportNode(containernode, 
    true);
    XmlNode myextranode = 
   bodynode.AppendChild(soapEnvelope.CreateElement("myextranodename"));
    
    XmlNode final = myextranode.AppendChild(importNode);
    bodynode.AppendChild(final);
    root.AppendChild(bodynode);
    return soapEnvelope;

我想要这样:

<soapenv:Body>
    <myextranodename>
     <myimportdata>
    </myextranodename>
</soapenv:Body>

..但现在去:

<myextranodename></myextranodename>
<myimportdata>

我究竟做错了什么? 感谢您的帮助。

啊:我必须删除最后一个 bodynode append 孩子:

bodynode.AppendChild(final);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM