如示例所示创建 xml 标头
Posted
技术标签:
【中文标题】如示例所示创建 xml 标头【英文标题】:creating xml header as in example 【发布时间】:2021-09-25 07:41:23 【问题描述】:我不擅长xml理解,请帮助我 这是我需要的xml
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:ENRC-IDOC_939_DigiDocs:idm">
<soapenv:Header />
<soapenv:Body>
<urn:mt_digidocs_fees>
这是我的代码
XmlDeclaration xmlDeclaration = doc.CreateXmlDeclaration( "1.0", "UTF-8", null );
XmlElement root = doc.DocumentElement;
doc.InsertBefore(xmlDeclaration, root);
XmlElement envelope = doc.CreateElement("soapenv","Envelope", "http://schemas.xmlsoap.org/soap/envelope/");
XmlAttribute urn = doc.CreateAttribute("xmlns","urn", "http://www.w3.org/2000/xmlns/");
urn.Value = "urn:ENRC-IDOC_939_DigiDocs:idm";
envelope.Attributes.SetNamedItem(urn);
doc.AppendChild(envelope);
XmlNode soapenvheader = doc.CreateElement("soapenv", "Header", doc.DocumentElement.NamespaceURI);
envelope.AppendChild(soapenvheader);
XmlNode body = doc.CreateElement("soapenv", "Body", doc.DocumentElement.NamespaceURI);
envelope.AppendChild(body);
XmlElement mt_digidocs_fees = doc.CreateElement("mt_digidocs_fees");
mt_digidocs_fees.Prefix = "urn";
body.AppendChild(mt_digidocs_fees);
这就是我得到的
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:urn="urn:ENRC-IDOC_939_DigiDocs:idm" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header />
<soapenv:Body>
<mt_digidocs_fees>
所以最后一个元素的名称不包含前缀和命名空间地址的顺序不同
提前致谢
【问题讨论】:
mt_digidocs_fees = doc.CreateElement("mt_digidocs_fees", "urn:ENRC-IDOC_939_DigiDocs:idm");
?
你为什么不直接使用 SOAP 库来为你做这件事?
@Liam 你能再解释一下吗?我刚得到 xml,并被要求以这种格式发送我的数据。似乎我必须阅读一些关于 SOAP 的内容
SOAP(简单对象访问协议)is a standard 尽管它已经很老了。视觉工作室supports this out of the box
或者它曾经,我不确定它是否仍然存在。如前所述,SOAP 现在已经很老了
【参考方案1】:
我喜欢这样使用 Xml Linq:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication1
class Program
static void Main(string[] args)
string ident = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:urn=\"urn:ENRC-IDOC_939_DigiDocs:idm\"></soapenv:Envelope>";
XDocument doc = XDocument.Parse(ident);
XElement envelope = doc.Root;
XNamespace nsUrn = envelope.GetNamespaceOfPrefix("urn");
XNamespace nsSoapenv = envelope.GetNamespaceOfPrefix("soapenv");
XElement header = new XElement(nsSoapenv + "Header");
envelope.Add(header);
XElement body = new XElement(nsSoapenv + "Body");
envelope.Add(body);
XElement fees = new XElement(nsUrn + "mt_digidocs_fees");
body.Add(fees);
【讨论】:
以上是关于如示例所示创建 xml 标头的主要内容,如果未能解决你的问题,请参考以下文章
如何为使用“create-react-app”创建的 React 应用程序设置标头