xml - 如何在Delphi 2009中解析此XML字符串?

标签 xml delphi delphi-2009 xmldocument

这是XML字符串具有的信息。

<?xml version="1.0" encoding="UTF-8"?>
<string xmlns="http://tempuri.org/">
<statusInfo><vendorClaimID>BRADY12478018AETNA</vendorClaimID>
<statusID>0</statusID><statusDescription>Unvalidated</statusDescription>
</statusInfo></string>


但是,它就是这样来的。您必须向右滚动才能看到所有内容。

'<?xml version="1.0" encoding="utf-8"?>'#$D#$A'<string xmlns="http://tempuri.org/">&lt;statusInfo&gt;&lt;vendorClaimID&gt;BRADY12478018AETNA&lt;/vendorClaimID&gt;&lt;statusID&gt;0&lt;/statusID&gt;&lt;statusDescription&gt;Unvalidated&lt;/statusDescription&gt;&lt;/statusInfo&gt;</string>'


我已将字符串加载到XMLDoc中,但不知道如何从此处轻松访问值。

var
doc: IXMLDocument;


doc := LoadXMLData(xmlString);


谢谢!

最佳答案

您可以使用XPath提取节点的值

检查这个样本

{$APPTYPE CONSOLE}

{$R *.res}

uses
  MSXML,
  SysUtils,
  ActiveX,
  ComObj;


Const

XMLStr=
'<?xml version="1.0" encoding="UTF-8"?> '+
'<string xmlns="http://tempuri.org/">'+
' <statusInfo>'+
'  <vendorClaimID>BRADY12478018AETNA</vendorClaimID> '+
'  <statusID>0</statusID><statusDescription>Unvalidated</statusDescription> '+
' </statusInfo>'+
'</string> ';

procedure Test;
Var
  XMLDOMDocument  : IXMLDOMDocument;
  XMLDOMNode      : IXMLDOMNode;
begin
  XMLDOMDocument:=CoDOMDocument.Create;
  XMLDOMDocument.loadXML(XmlStr);
  XMLDOMNode := XMLDOMDocument.selectSingleNode('//string/statusInfo/vendorClaimID');
  if XMLDOMNode<>nil then
    Writeln(Format('vendorClaimID %s',[String(XMLDOMNode.Text)]));

  XMLDOMNode := XMLDOMDocument.selectSingleNode('//string/statusInfo/statusID');
  if XMLDOMNode<>nil then
    Writeln(Format('statusID %s',[String(XMLDOMNode.Text)]));

  XMLDOMNode := XMLDOMDocument.selectSingleNode('//string/statusInfo/statusDescription');
  if XMLDOMNode<>nil then
    Writeln(Format('statusDescription %s',[String(XMLDOMNode.Text)]));
end;


begin
 try
    CoInitialize(nil);
    try
      Test;
    finally
      CoUninitialize;
    end;
 except
    on E:EOleException do
        Writeln(Format('EOleException %s %x', [E.Message,E.ErrorCode]));
    on E:Exception do
        Writeln(E.Classname, ':', E.Message);
 end;
 Writeln('Press Enter to exit');
 Readln;
end.

关于xml - 如何在Delphi 2009中解析此XML字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10707740/

相关文章:

delphi - 如何向 IDE 菜单添加自定义样式?

delphi - 如何清理用作文件名的字符串?

algorithm - 统计项目频率

java - 动态 xml 过滤和转换(Java 中)

java - 如何在用户界面中使用 SOAP Web 服务?

Java XML 数字字符引用

delphi - 了解代码是使用 Lazarus 还是 Delphi 编译的

sql-server - delphi dbgrid bool 值,接受 f fa fal fals false ,如何接受更多值?

delphi - 通用类型的大小

android - 如何在不改变android中按钮大小的情况下使按钮内的文本居中