gpt4 book ai didi

xml - 以正确的格式编写 XML 字符串?

转载 作者:行者123 更新时间:2023-12-03 19:00:41 25 4
gpt4 key购买 nike

请原谅我缺乏适当的术语,因为我确信有一个术语。我正在使用原始字符串编写 XML 文本(为了便于使用,不使用任何类型的 XML 构建器/解析器)。但是,我面临一个问题,即我提供的数据中的某些字符会脱离标准化。例如,&象征。当一个字符串包含这个时,结束解析器就会被抛出。如何正确适应这种情况并将字符串转换为 XML 标准?

我正在将纯字符串写入字符串列表并读取它的 Text属性如下。注意子程序 A(const S: String);这是一种在 XML 文件中添加一行并添加必要缩进的缩短方法。见子程序 Standardize ,这是我需要填写的。

uses Windows, Classes, SysUtils, DB, ADODB, ActiveX;

function TSomething.FetchXML(const SQL: String): String;
var
L: TStringList;
Q: TADOQuery;
X, Y: Integer;
function Standardize(const S: String): String;
begin
Result:= S; //<<<--- Need to convert string to XML standards
end;
procedure A(const Text: String; const Indent: Integer = 0);
var
I: Integer;
S: String;
begin
if Indent > 0 then
for I := 0 to Indent do
S:= S + ' ';
L.Append(S + Text);
end;
begin
Result:= '';
L:= TStringList.Create;
try
Q:= TADOQuery.Create(nil);
try
Q.ConnectionString:= FCredentials.ConnectionString;
Q.SQL.Text:= SQL;
Q.Open;
A('<?xml version="1.0" encoding="UTF-8"?>');
A('<dataset Source="ECatAPI">');
A('<table>');
A('<fields>', 1);
for X := 0 to Q.FieldCount - 1 do begin
A('<field Name="'+Q.Fields[X].FieldName+'" '+
'Type="'+IntToStr(Integer(Q.Fields[X].DataType))+'" '+
'Width="'+IntToStr(Q.Fields[X].DisplayWidth)+'" />', 2);
end;
A('</fields>', 1);
A('<rows>', 1);
if not Q.IsEmpty then begin
Q.First;
while not Q.Eof do begin
A('<row>', 2);
for Y:= 0 to Q.FieldCount - 1 do begin
A('<value Field="'+Q.Fields[Y].FieldName+'">'+
Standardize(Q.Fields[Y].AsString)+'</value>', 3);
end;
A('</row>', 2);
Q.Next;
end;
end;
A('</rows>', 1);
A('</table>');
A('</dataset>');
Result:= L.Text;
Q.Close;
finally
Q.Free;
end;
finally
L.Free;
end;
end;

注意

以上是伪代码,复制修改,不相关的东西已经修改/排除了……

更多信息

此应用程序是一个独立的 Web 服务器,提供对数据的只读访问。我只需要编写 XML 数据,不需要读取它。即使我这样做了,我也已经有一个涵盖该部分的 XML 解析器库。我试图尽可能地保持这种轻量级,而不用不必要的对象填充内存。

最佳答案

不要手动生成 XML PERIOD。

为转义复杂数据(例如 XML、HTML 或 XML 中的其他 SGML、转义的 CDATA)编写正确的代码是不值得的。

你做的转义是just a start .等到有人在您的数据中放入不兼容的内容。

无论如何,许多数据库都支持从查询创建格式良好的 XML(请参阅其他答案),这是您应该研究的方向。

关于xml - 以正确的格式编写 XML 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12207850/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com