我需要使用 Delphi 7 读取此 XML 文本中的 status
字段。
此 XML 位于 TMemo
内:
<?xml version="1.0" encoding="UTF-8"?>
<licensecloud>
<request_id>665675780</request_id>
<request_timestamp>8/4/2018 15:47:44</request_timestamp>
<request_status>OK</request_status>
<error_num>0</error_num>
<error_msg></error_msg>
<error_desc></error_desc>
<license>
<key>a6gdfg567c79afd429d872d</key>
<dashed>A6589-dfg46D429-D872D</dashed>
<status>ACTIVE</status>
<trial>no</trial>
<expires/>
到目前为止,我这样做没有任何结果,我什么也没得到:
Uses XMLDoc, XMLIntf;
procedure TForm1.BitBtn1Click(Sender: TObject);
var
XmlFile : TXMLDocument;
Doc: IXMLDocument;
MainNode, CustomerNode : IXMLNode;
i : Integer;
XMLPath : string;
begin
Doc := LoadXMLData(Memo1.Text);
try
// XmlFile.LoadFromFile(XMLPath);
Doc.Active := True;
MainNode := Doc.DocumentElement;
for i:=0 to MainNode.ChildNodes['licensecloud'].ChildNodes.Count-1 do
begin
CustomerNode := MainNode.ChildNodes['licensecloud'].ChildNodes[i];
//Here you can get any imformation
ShowMessage(CustomerNode.ChildNodes['status'].Text);
//ShowMessage(CustomerNode.ChildNodes['address_line_1'].Text);
end;
finally
FreeAndNil(XmlFile);
end;
end;
最佳答案
您的 xml 无效。缺少结束标记(
</license>
和</licensecloud>
)。有效的 XML:<?xml version="1.0" encoding="UTF-8"?> <licensecloud> <request_id>665675780</request_id> <request_timestamp>8/4/2018 15:47:44</request_timestamp> <request_status>OK</request_status> <error_num>0</error_num> <error_msg></error_msg> <error_desc></error_desc> <license> <key>a6gdfg567c79afd429d872d</key> <dashed>A6589-dfg46D429-D872D</dashed> <status>ACTIVE</status> </license> <trial>no</trial> <expires/> </licensecloud>
主节点是
<licensecloud>
。MainNode.ChildNodes['licensecloud']
是不正确的。正确代码:procedure TForm1.Button1Click(Sender: TObject); var XmlFile : TXMLDocument; Doc: IXMLDocument; MainNode, CustomerNode : IXMLNode; i : Integer; XMLPath : string; begin Doc := LoadXMLData(Memo1.Text); try // XmlFile.LoadFromFile(XMLPath); Doc.Active := True; MainNode := Doc.DocumentElement; ShowMessage(MainNode.ChildNodes['license'].ChildNodes['status'].Text); finally FreeAndNil(XmlFile); end; end;
关于xml - 我需要帮助从 XML 读取状态字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51689666/