访问webservice,导入xml至本地数据集

简介:
  1. 创建本地数据集

     clientdataset2.FieldDefs.Clear;;
      with clientdataset2.FieldDefs.AddFieldDef do
      begin
        Name := 'id';
        Size := 10;
        DataType := ftString;
      end;
      with clientdataset2.FieldDefs.AddFieldDef do
      begin
        Name := 'xm';
        size := 10;
        DataType := ftstring;
      end;
      with clientdataset2.FieldDefs.AddFieldDef do
      begin
        Name := 'xb';
        Size := 10;
        DataType := ftString;
      end;
      with clientdataset2.FieldDefs.AddFieldDef do
      begin
        Name := 'nl';
        DataType := ftinteger;
      end;
      with clientdataset2.FieldDefs.AddFieldDef do
      begin
        Name := 'sfzh';
        Size := 10;
        DataType := ftString;
      end;
      with clientdataset2.FieldDefs.AddFieldDef do
      begin
        Name := 'jtzz';
        size := 30;
        DataType := ftstring;
      end;
      clientdataset2.CreateDataSet;
      clientdataset2.open;

  2. 导入xml

    var
      xml:Tnativexml;
      root: TsdElement;
      i:integer;
      ////////////声明soapheader
      aIntf: DataCenterServicesSoap;
      Headers: ISOAPHeaders;
      H: SecuritySoapHeader2;//SecuritySoapHeader2;
    begin
      Try
        clientdataset2.EmptyDataSet;
        xml := Tnativexml.Create(nil);

        ////////////////////////////////////////////////////发送soapheader
        aIntf := (httprio1 as DataCenterServicesSoap);

        H := SecuritySoapHeader2.Create;
        h.Ticket := 'BE2E4F35-CDE9-46A1-844B-9FB2546491B2';

        Headers := (aIntf as ISOAPHeaders);
        Headers.Send(H); //发送Soap Header
       // xml.ReadFromString((httprio1 as DataCenterServicesSoap).getdataasxml(memo1.Text));
        //aIntf.GetInfo; //调用服务
        xml.ReadFromString((httprio1 as DataCenterServicesSoap).GetXML(memo1.Text));
        xml.XmlFormat := xfReadable;
        root := xml.Root;
        for i := 0 to root.NodeCount - 1 do
        begin
          clientdataset2.Append;
          clientdataset2.FieldByName('id').Value := root[i].NodeByName('ID').Value;
          clientdataset2.FieldByName('xm').Value := root[i].NodeByName('xm').Value;
          clientdataset2.FieldByName('xb').Value := root[i].NodeByName('xb').Value;
          clientdataset2.FieldByName('nl').Value := root[i].NodeByName('nl').Value;
          clientdataset2.FieldByName('sfzh').Value := root[i].NodeByName('sfzh').Value;
          clientdataset2.FieldByName('jtzz').Value := root[i].NodeByName('jtzz').Value;
          clientdataset2.Post;
        end;
      finally
        aIntf := nil;
      End;

      xml.Free;
      H.Free;

------------------------------------------------------------------

var
  xml:Tnativexml;
  root: TsdElement;
  i:integer;
  aIntf: DataCenterServicesSoap;
  ////////////声明soapheader
begin
  Try
    clientdatasetxz.EmptyDataSet;
    xml := Tnativexml.Create(nil);

    ////////////////////////////////////////////////////发送soapheader
    aIntf := (httprio1 as DataCenterServicesSoap);
   // roota := xml.root.NodeNew('NewDataset');
    xml.ReadFromString((httprio1 as DataCenterServicesSoap).GetXZZD);
    memo6.lines.text := (httprio1 as DataCenterServicesSoap).GetXZZD;
    xml.XmlFormat := xfReadable;
    root := xml.Root;
    for i := 0 to root.NodeCount - 1 do
    begin
        Memo4.Lines.Add(root[i].Name + #9 + root[i].Value); // root[i] = root.Nodes[i]

         Memo4.Lines.Add( root[i].NodeByName('unitId').Value + #9 + root[i].NodeByName('name').Value); // root[i] = root.Nodes[i]
    end;
    {
    for i := 0 to root.NodeCount - 1 do
    begin
     {
      clientdatasetxz.Append;
      clientdatasetxz.FieldByName('unitid').Value := root[i].NodeByName('unitId').Value;
      clientdatasetxz.FieldByName('name').Value := root[i].NodeByName('name').Value;
      clientdatasetxz.Post;
      }
     {
      memo4.lines.add(root.NodeByName('unitId').Value + ' ' +  root.NodeByName('name').Value);
      // memo4.lines.add(root[i].Nodes[0].Value + ' ' +  root[i].Nodes[1].Value);
    end;
    }

  finally
    aIntf := nil;
  End;

  xml.Free;
  //H.Free;
















本文转自鹅倌51CTO博客,原文链接: http://blog.51cto.com/kaixinbuliao/1440573,如需转载请自行联系原作者


相关文章
|
3月前
|
XML 存储 JavaScript
XML DOM - 访问节点
XML DOM 允许你访问XML文档中的每一个节点。你可以通过三种方式进行节点访问:使用 `getElementsByTagName()` 方法、循环遍历节点树或通过节点间的关系进行导航。`getElementsByTagName()` 返回一个节点列表,即节点的数组形式。示例代码展示了如何将 "books.xml" 文件加载到 `xmlDoc` 中,并随后在变量 `x` 中存储这些信息。
|
4月前
|
XML 存储 JavaScript
XML DOM - 访问节点
通过 DOM, 可全面访问 XML 文档的节点。实现这一目标有 3 种方法: 1. 使用 `getElementsByTagName()` 方法, 2. 遍历节点树, 3. 利用节点间的关联进行导航。 `getElementsByTagName()` 返回一个 Node List, 即节点数组。
|
4月前
|
XML 存储 JavaScript
XML DOM - 访问节点
通过 DOM, 可全面访问 XML 文档的节点。实现这一目标有 3 种方法: 1. 使用 `getElementsByTagName()` 方法, 2. 遍历节点树, 3. 利用节点间的关联进行导航。 `getElementsByTagName()` 返回一个 Node List, 即节点数组。示例代码加载 "books.xml" 到 xmlDoc 并存储...
|
4月前
|
XML 存储 JavaScript
XML DOM - 访问节点
通过 DOM, 可全面访问 XML 文档的节点。实现这一目标有 3 种方法: - 使用 `getElementsByTagName()` 方法, - 循环遍历节点树, - 利用节点间关系进行导航。 `getElementsByTagName()` 返回一个 Node List,即一种节点数组形式。示例代码通过 `loadXMLDoc()` 函数加载 "books.xml" 文件到 `xmlDoc` 变量中,并随后在变量 `x` 中保存所需节点信息。
|
4月前
|
XML 存储 JavaScript
XML DOM - 访问节点
`getElementsByTagName()` 方法用于获取 XML 文档中指定标签名的所有节点,返回一个节点列表,类似数组。可以循环遍历节点树或利用节点关系导航来访问每个节点。例如,加载 "books.xml" 到 xmlDoc 后,变量 x 存储了所有 `<book>` 节点的列表。
|
4月前
|
XML 存储 JavaScript
XML DOM - 访问节点
DOM 允许访问 XML 文档的每个节点, 主要通过三种方式: 1. 使用 `getElementsByTagName()` 方法; 2. 循环遍历节点树; 3. 利用节点间关系导航。 此方法返回一个节点列表(Node List),实质为节点数组。示例代码加载 "books.xml" 到 `xmlDoc`,并存储结果到变量 `x`。
|
4月前
|
XML 存储 JavaScript
XML DOM - 访问节点
`getElementsByTagName()` 方法用于访问XML文档中的特定节点。节点可按三种方式获取:使用该方法、遍历节点树或导航节点关系。`getElementsByTagName()` 返回一个节点列表,类似数组,可用于处理多个匹配节点。例如,代码加载 "books.xml" 到 `xmlDoc`,再将结果保存到变量 `x`。
|
4月前
|
XML 存储 JavaScript
XML DOM - 访问节点
`getElementsByTagName()` 方法用于访问XML文档中的特定节点。节点可按三种方式获取:使用该方法、遍历节点树或导航节点关系。`getElementsByTagName()` 返回一个节点列表,类似数组,可用于处理多个匹配节点。例如,代码加载 "books.xml" 到 `xmlDoc`,再将结果保存到变量 `x`。
|
4月前
|
XML 存储 JavaScript
XML DOM - 访问节点
通过 DOM,您能够访问 XML 文档中的每个节点。
|
4月前
|
XML 存储 JavaScript
XML DOM - 访问节点
DOM 允许访问 XML 文档的每个节点, 主要通过三种方式: 1. 使用 `getElementsByTagName()` 方法; 2. 循环遍历节点树; 3. 利用节点间关系导航。`getElementsByTagName()` 返回节点列表, 类似数组结构。示例代码加载 "books.xml" 到 xmlDoc, 并存储结果于变量 x 中。