在delphi中解析XML时出现异常错误

时间:2014-03-30 05:41:09

标签: xml delphi delphi-xe4 xml-binding

我在解析xml文档时遇到了问题。实际上我正在使用XMl绑定向导来提取属性值,但每次抛出异常时都会。

这是我的xml:

<?xml version="1.0" encoding="UTF-8"?>
<conversioncloud version="1.2">
    <status step="finished"/>
    <id>
        <![CDATA[T9Nr96Hy]]>
    </id>
    <videoid>
        <![CDATA[92590917]]>
    </videoid>
    <server>
        <![CDATA[server12]]>
    </server>
    <file>
        <![CDATA[my file ofr xmfhf.ext]]>
    </file>
    <service>
        <![CDATA[myservice]]>
    </service>
    <mediaurl>
        <![CDATA[web address here]]>
    </mediaurl>
    <downloadurl>
        <![CDATA[download url here]]>
    </downloadurl>
    <downloadserver>
        <![CDATA[srv55]]>
    </downloadserver>
    <downloadhash>
        <![CDATA[upyxqnJmsKuwbGttn5OcaXCs26SqaG60l5acbmpmm2pka7WEz9bXnaeE14ujqK2tyMg%3D]]>
    </downloadhash>
    <filesize>
        <![CDATA[2.77 MB]]>
    </filesize>
    <debuginfo>
        <![CDATA[T9Nr96Hy|92590917|srv55|1396163808|ListenToYoutube]]>
    </debuginfo>
</conversioncloud>

我的代码:

procedure TForm1.Button10Click(Sender: TObject);
var
  Cloud : IXMLConversioncloudType;
  size : Integer;
begin
  XMLDocument1.XML.Text := Memo1.Text;
  Cloud := Getconversioncloud(XMLDocument1);

// trying to display "file" field from xml document above  
ShowMessage(Cloud.File_);
end;

每当我收到错误时:预计会打开'['字符行:23

任何代码片段或合适的链接都将受到赞赏。

编辑: 谢谢,但是我在Delphi中的有限知识无法捕获发布的指令。顺便说一句,这个xml绑定似乎在C ++ Builder 6中有效。使用xml绑定,我能够提取所需的字段,如downloadurl,mediaurl,file来自同一个xml的等等。 这是C ++ Builder 6中的代码。

void __fastcall YoutubeMax::ShowFileInfo(String aResponse)
{
        frmMain->XMLDocument1->XML->Text =  aResponse;
        _di_IXMLconversioncloudType cloud = Getconversioncloud(frmMain->XMLDocument1);

        // find index of files
        int url = cloud->ChildNodes->IndexOf("downloadurl");
        int title =  cloud->ChildNodes->IndexOf("file");
        int size = cloud->ChildNodes->IndexOf("filesize");

        // Fill the details
        frmMain->lblYoutubeFilename->Caption = "Title : " + cloud->ChildNodes->Nodes[title]->ChildNodes->Nodes[0]->Text;
        frmMain->lblYoutubeFileSize->Caption = "File Size : " + cloud->ChildNodes->Nodes[size]->ChildNodes->Nodes[0]->Text;
        frmMain->memoYoutubeMp3Link->Text = cloud->ChildNodes->Nodes[url]->ChildNodes->Nodes[0]->Text;

我不知道为什么同样的逻辑在delphi xe4中不起作用。顺便说一下,xml是有效的,因为它在Internet explporer和Chrome中正常打开。如果你有任何其他方法来解析这个xml,那么请回复。

0 个答案:

没有答案