标签: nativexml

如何使用Delphi 2009安装nativeXML?

我正在使用Delphi 2009并希望运行一些XML数据.我听说nativeXML是最方便的方法之一.那么我该如何安装这个库?

xml delphi delphi-2009 nativexml

7
推荐指数
1
解决办法
2194
查看次数

使用最新的NativeXml(v4.03 svn),是否可以使用前面和后面的空白获取元素的值而无需迭代地检查类型?

如下所示,最新的NativeXml(v4.03 svn)将元素的值视为三个部分:前面的空白,char数据和尾随空白.因此,可以迭代地检查元素的子节点以获得具有前导和尾随空白的值.但是,对于传统的NativeXml(v3.10),这不是必需的,因此我想知道什么是首选方式(可能没有这样的迭代检查/字符串连接)来执行此操作?

示例XML文档

<?xml version="1.0" encoding="UTF-8" ?>
<CDXML><s>beforeLineBreak
</s></CDXML>
Run Code Online (Sandbox Code Playgroud)

示例XML文档

<?xml version="1.0" encoding="UTF-8" ?>
<CDXML><s>
afterLineBreak</s></CDXML>
Run Code Online (Sandbox Code Playgroud)

使用NativeXml v3.10的示例代码,不需要迭代检查

procedure XXX310;
var
  element: TXmlNode; 
  elementType: TElementType;
begin
  elementType := element.ElementType;
  element.ElementType := xeCharData;
  ... element.ValueAsString ...
  element.ElementType := elementType;      
end;
Run Code Online (Sandbox Code Playgroud)

NativeXml v3.10的相关源代码(完整方法体)

function TXmlNode.GetValueAsString: UTF8String;
begin
  if FElementType = xeNormal then
    Result := UnEscapeString(sdUTF8Trim(FValue))
  else
    Result := UnEscapeString(FValue);
end;
Run Code Online (Sandbox Code Playgroud)

使用需要迭代检查的NativeXml v4.03 svn的示例代码

procedure XXX403;
var
  tempString: String;
  element: TXmlNode; // actually TsdElement
begin
  tempString := '';
  for I := element.DirectNodeCount to …
Run Code Online (Sandbox Code Playgroud)

xml delphi whitespace nativexml

5
推荐指数
0
解决办法
1334
查看次数

NativeXml和线程

我试着让这个库使用线程,但是我无法使用syncronize将结果返回到主线程.

在excute方法中创建xml没问题.

有人用过吗?


   TMyThread = class(TThread)
       private
       ADoc : TNativeXml;
        protected
         procedure Execute; override;
         procedure DoProgress;
       public
         constructor Create(CreateSuspended: Boolean);
      end;

    { TMyThread }

    constructor TMyThread.Create(CreateSuspended: Boolean);
    begin
      inherited;
    end;

procedure TMyThread.DoProgress;
begin
 formMain.meminfo.Lines.Add(ADoc.WriteToString);
end;

procedure TMyThread.Execute;
var i,j : integer;
begin
  inherited;
begin
    ADoc:= ADoc.Create(formMain);
    try
    Adoc.XmlFormat := xfReadable;
    ADoc.LoadFromFile('test.xml');
    Synchronize(DoProgress);
    finally 
       FreeAndNil(ADoc);
    end;
end;
end; 
Run Code Online (Sandbox Code Playgroud)

xml delphi nativexml

1
推荐指数
1
解决办法
511
查看次数

标签 统计

delphi ×3

nativexml ×3

xml ×3

delphi-2009 ×1

whitespace ×1