Delphi TXMLDocument中出现意外结果

Delphi TXMLDocument中出现意外结果,delphi,delphi-xe7,txmldocument,Delphi,Delphi Xe7,Txmldocument,我试图创建一个xml文档来访问Web服务。我很难得到我想要的结果:这是我创建此文档的代码 xmlQuery.Active := true; xmlQuery.Version := '1.0'; xmlQuery.Encoding := 'UTF-8'; lEnvelope := xmlQuery.AddChild('soap:Envelope'); lEnvelope.Attributes['xmlns:soap'] := 'http://schemas.xmlsoap.or

我试图创建一个xml文档来访问Web服务。我很难得到我想要的结果:这是我创建此文档的代码

  xmlQuery.Active := true;
  xmlQuery.Version := '1.0';
  xmlQuery.Encoding := 'UTF-8';
  lEnvelope := xmlQuery.AddChild('soap:Envelope');
  lEnvelope.Attributes['xmlns:soap'] := 'http://schemas.xmlsoap.org/soap/envelope/';
  lHeader := lEnvelope.AddChild('soap:Header');
  lBruker := lHeader.AddChild('brukersesjon:Brukersesjon');
  lValue := lBruker.AddChild('distribusjonskanal');
  lValue.Text := 'PTP';
  lValue := lBruker.AddChild('systemnavn');
  lValue.Text := 'infotorgEG';
生成的xml如下所示

<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Header>
      <brukersesjon:Brukersesjon>
           <brukersesjon:distribusjonskanal>PTP</brukersesjon:distribusjonskanal>
           <brukersesjon:systemnavn>infotorgEG</brukersesjon:systemnavn>
      </brukersesjon:Brukersesjon>
    </soap:Header>
</soap:Envelope>
<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Header>
       <brukersesjon:Brukersesjon>
           <distribusjonskanal>PTP</distribusjonskanal>
           <systemnavn>infotorgEG</systemnavn>
       </brukersesjon:Brukersesjon>
   </soap:Header>
</soap:Envelope>
我希望它看起来像这样

<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Header>
      <brukersesjon:Brukersesjon>
           <brukersesjon:distribusjonskanal>PTP</brukersesjon:distribusjonskanal>
           <brukersesjon:systemnavn>infotorgEG</brukersesjon:systemnavn>
      </brukersesjon:Brukersesjon>
    </soap:Header>
</soap:Envelope>
<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Header>
       <brukersesjon:Brukersesjon>
           <distribusjonskanal>PTP</distribusjonskanal>
           <systemnavn>infotorgEG</systemnavn>
       </brukersesjon:Brukersesjon>
   </soap:Header>
</soap:Envelope>
我不知道我做错了什么。你们谁能帮助我?有谁知道创建包含标题和正文的xml文件的示例/教程吗?

使用重载的IXMLNode.AddChild,它为NameSpaceURI获取第二个参数:

这将生成显示为所需输出的输出

<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header><brukersesjon:Brukersesjon>
    <distribusjonskanal>PTP</distribusjonskanal>
    <systemnavn>infotorgEG</systemnavn>
  </brukersesjon:Brukersesjon>
  </soap:Header>
</soap:Envelope>

谢谢。这使我在学习使用TXMLDocument的过程中又前进了一步。提示:不要硬编码soap:-冒号分隔的前缀是一个名称空间,如果您将其版本与其他名称空间参数一起使用,则所有XML文档方法都可以为您插入此名称空间。停止使用TXMLDocument来使用Web服务。将WSDL与THTTPRIO结合使用来完成这类任务。我已经尝试过了,但是WSDL的导入失败了。我之前在这里发布了一个关于这个的问题。那么你为什么不处理这个问题呢?