Qxml如何添加cdata

我一直都在寻找各种业务功能的最简单写法,用减法的模式来开发软件。如果有比我的写法更简单的方法,请留言告知。

我们再使用的时候,往往需要包含这些特殊字符,要求保持这些特殊字符不变。

这个时候就需要用<![CDATA[   我是保持不影响XML解析的特殊字符”<>’等     ]]> 把特殊字符包含起来,夜深了,我累了 上demo。

 

procedure TForm4.btn1Click(Sender: TObject);
var
  I: Integer;
  MyQXML: TQXML;
begin
  MyQXML := TQXML.Create;
  try
    MyQXML.Parse(mmo1.Lines.Text);

    //修改其中几项的值
    for I := 0 to (MyQXML.ItemByPath('layout').Count - 1) do
    begin
      if rb1.Checked then
      begin
        //初学者容易犯的一个错误就是手工编码的方式写入CDATA,这样搞会导致AxXML时CDATA中的内容依然会被转义.
        MyQXML.ItemByPath('layout').Items[I].ItemByName('text').Text := '<![CDATA[<%=_data.' + MyQXML.ItemByPath('layout').Items[I].AttrByPath('text', 'value').Value + '%>]]>';
      end else begin
        //正规增加CDATA的方法
        MyQXML.ItemByPath('layout').Items[I].ItemByName('text').AddCData('<%=_data.' + MyQXML.ItemByPath('layout').Items[I].AttrByPath('text', 'value').Value + '%>');
      end;
      MyQXML.ItemByPath('layout').Items[I].AttrByPath('text', 'value').Value := '';
    end;

    mmo2.Lines.Clear;
    mmo2.Lines.Add(MyQXML.AsXML);
  finally
    MyQXML.Free;
  end;
end;

 

分享到: