4

私は Delphi を初めて使用しますが、これが私がやりたいことです。私はこのようにフォーマットされたXMLファイルを持っています、

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <Row>
        <Designation>1234102</Designation>
        <Inner>5.412</Inner>
        <Outer>3.588</Outer>
        <Spin>4.732</Spin>
        <Cage>0.399</Cage>
    </Row>
    <Row>
        <Designation>1342153</Designation>
        <Inner>5.916</Inner>
        <Outer>4.084</Outer>
        <Spin>5.277</Spin>
        <Cage>0.408</Cage>
    </Row>
    ........
</Data>

Delphiでクエリしたい。例: 1342153 の場所のデータが必要です。最も簡単な解決策は何ですか?

例と説明を事前に感謝します。

4

4 に答える 4

3

他の人が示唆したように、XPath を使用して特定の値を見つけることができます。この場合、この式/Data/Row/Designation[text()="1342153"]を使用すると、指定に値 1342153 を含むノードが見つかります。

このサンプルコードを試してください

{$APPTYPE CONSOLE}

{$R *.res}

uses
  MSXML,
  SysUtils,
  ActiveX,
  ComObj;

Const
 XmlStr =
'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+
'<Data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">'+
'    <Row>'+
'        <Designation>1234102</Designation>'+
'        <Inner>5.412</Inner>'+
'        <Outer>3.588</Outer>'+
'        <Spin>4.732</Spin>'+
'        <Cage>0.399</Cage>'+
'    </Row>'+
'    <Row>'+
'        <Designation>1342153</Designation>'+
'        <Inner>5.916</Inner>'+
'        <Outer>4.084</Outer>'+
'        <Spin>5.277</Spin>'+
'        <Cage>0.408</Cage>'+
'    </Row>'+
'</Data>';

procedure Test;
Var
  XMLDOMDocument  : IXMLDOMDocument;
  XMLDOMNode      : IXMLDOMNode;
begin
  XMLDOMDocument:=CoDOMDocument.Create;
  XMLDOMDocument.loadXML(XmlStr);
  XMLDOMNode := XMLDOMDocument.selectSingleNode('/Data/Row/Designation[text()="1342153"]');
  if XMLDOMNode<>nil then
   Writeln('Found');
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.
于 2013-07-11T15:17:22.183 に答える
1

IXMLDocument と XPath は、Delphi で xml をクエリするときの友達です。XPath や TXmlDocument など、そのための多くのソースを見つけることができます 。

于 2013-07-11T14:42:05.247 に答える
0

xml からデータを照会したいので、ここに記載されている XML 変換を使用することをお勧めしますhttp://docwiki.embarcadero.com/RADStudio/XE4/en/Converting_XML_Documents_into_Data_Packets

これにより、xml が ClientDataSet にマップされ、必要な列でレコードをフィルター処理したり、DataBinding Wizard を使用したりできます。この URL http://docwiki.embarcadero.com/RADStudio/XE4/enのドキュメントに説明があります。 /Using_the_XML_Data_Binding_Wizard

XML を操作するその他の方法については、ドキュメントのメイン インデックスを参照してください http://docwiki.embarcadero.com/RADStudio/XE4/en/Working_with_XML_documents_Index

于 2013-07-11T13:41:05.453 に答える