DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: webb123
今日帖子: 1
在线用户: 2
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 huo_v_wu (勇敢的螳螂) ★☆☆☆☆ -
盒子活跃会员
2016/6/25 10:06:40
标题:
delhi 如何循环读取字符串里的值 格式如下 浏览:1188
加入我的收藏
楼主: delhi 如何循环读取字符串里的值 格式如下
<?xml version="1.0" encoding="UTF-8"?><error></error><page rowcount='2' colcount='3'><row><d>430000001</d><d>A类商品</d><d>10</d></row>
<row><d>430000002</d><d>B类商品</d><d>10</d></row>
</page>
----------------------------------------------
-敢于学习,谦虚学习,鼓励批评!!
作者:
男 star5 (星五) ★☆☆☆☆ -
盒子活跃会员
2016/6/25 13:15:39
1楼: 不是回答你了么,你之前那个帖子 http://bbs.2ccc.com/topic.asp?topicid=512471
----------------------------------------------
博客 - http://offeu.com
脚本模型 - http://webpascal.com
需要短信接口的请联系我,可发行业与营销内容。
作者:
男 star5 (星五) ★☆☆☆☆ -
盒子活跃会员
2016/6/25 13:17:56
2楼: Value(1/2):<d>430000001</d><d>A类商品</d><d>10</d>
Value(2/2):<d>430000002</d><d>B类商品</d><d>10</d>


Value(1/3):430000001
Value(2/3):A类商品
Value(3/3):10


Value(1/3):430000002
Value(2/3):B类商品
Value(3/3):10
----------------------------------------------
博客 - http://offeu.com
脚本模型 - http://webpascal.com
需要短信接口的请联系我,可发行业与营销内容。
作者:
男 biznow (biznow) ★☆☆☆☆ -
盒子活跃会员
2016/6/25 14:18:24
3楼: 我觉得还是使用xml方式解析更好, 楼主为了这个开了好多个帖子,这完全没有必要,为了回答楼主的几个帖子的内容,代码中模拟了两个帖子想得到的答案

下面方法使用了nativexml,

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Forms, StdCtrls, Classes, Controls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses NativeXml;
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  xml: TNativeXml;
  Node: TXmlNode;
  ss: TStringStream;
  i: Integer;
begin
  try
    ss := TStringStream.Create('', TEncoding.UTF8);
    ss.WriteString('<?xml version="1.0" encoding="UTF-8"?><error></error><page rowcount=''2'' colcount=''3''><row><d>430000001</d><d>A类商品</d><d>10</d></row><row><d>430000002</d><d>B类商品</d><d>10</d></row></page>');
    ss.WriteString
      ('<?xml version="1.0" encoding="UTF-8"?><error></error><page rowcount=''2'' colcount=''15''><row><d>字段1</d><d>字段2</d><d>字段3</d><d>字段4</d></row>><row><d>字段1</d><d>字段2</d><d>字段3</d><d>字段4</d></row>><row><d>字段1</d><d>字段2</d><d>字段3</d><d>字段4</d></row></page>');
    ss.Position := 0;
    xml := TNativeXml.Create(nil);
    xml.LoadFromStream(ss);
    Node := xml.FindFirst;
    while assigned(Node) do
    begin
      if Node.Name = 'row' then
      begin
        for i := 0 to Node.ElementCount - 1 do
        begin
          if Node.Elements[i].Name = 'd' then
          Memo1.Lines.Add(format('%s%d=%s', [Node.Elements[i].Name, i + 1, Node.Elements[i].Value]));
        end;
      end;
      Node := xml.FindNext(Node);
    end;
  finally
    ss.Free;
    xml.Free;
  end;
end;

end.

输出:

d1=430000001
d2=A类商品
d3=10
d1=430000002
d2=B类商品
d3=10
d1=字段1
d2=字段2
d3=字段3
d4=字段4
d1=字段1
d2=字段2
d3=字段3
d4=字段4
d1=字段1
d2=字段2
d3=字段3
d4=字段4
----------------------------------------------
-
作者:
男 biznow (biznow) ★☆☆☆☆ -
盒子活跃会员
2016/6/25 14:51:02
4楼: 这里要特别说明的是

楼主的xml内容是非标准且是不合规的xml,通常的标准xml解析方法都会失效,但是nativexml不会出错,因为他是按照字节字符串来解析的,不回去管你的文档是否正确。





<page rowcount='2' colcount='15'>
  <row>
    <d>字段1</d>
    <d>字段2</d>
    <d>字段3</d>
    <d>字段4</d>
  </row>
  >          <----------这里
  <row>
    <d>字段1</d>
    <d>字段2</d>
    <d>字段3</d>
    <d>字段4</d>
  </row>
  >          <----------这里
  <row>
    <d>字段1</d>
    <d>字段2</d>
    <d>字段3</d>
    <d>字段4</d>
  </row>
</page>
----------------------------------------------
-
作者:
男 huo_v_wu (勇敢的螳螂) ★☆☆☆☆ -
盒子活跃会员
2016/6/25 23:44:05
5楼: 谢谢 非常感谢 我想问下NativeXml这是哪个单元的?
----------------------------------------------
-敢于学习,谦虚学习,鼓励批评!!
作者:
男 huo_v_wu (勇敢的螳螂) ★☆☆☆☆ -
盒子活跃会员
2016/6/26 0:10:55
6楼: 您能给我发一份吗?50722202@qq.com 谢谢
----------------------------------------------
-敢于学习,谦虚学习,鼓励批评!!
作者:
男 huo_v_wu (勇敢的螳螂) ★☆☆☆☆ -
盒子活跃会员
2016/6/26 0:28:45
7楼: Node := xml.FindFirst; 方法没有
Node.ElementCount - 1  方法没有
----------------------------------------------
-敢于学习,谦虚学习,鼓励批评!!
作者:
男 huo_v_wu (勇敢的螳螂) ★☆☆☆☆ -
盒子活跃会员
2016/6/27 19:55:21
8楼: 你用的是哪个版本的NativeXml  为什么我下载的NativeXml都报错呢?
----------------------------------------------
-敢于学习,谦虚学习,鼓励批评!!
作者:
男 biznow (biznow) ★☆☆☆☆ -
盒子活跃会员
2016/6/28 10:53:06
9楼: NativeXml407.zip

之前测试的时候是用407的,后来我也试过了409也可以的。
此帖子包含附件:biznow_201662810532.zip 大小:873.6K
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行111.3281毫秒 RSS