Announcement

Collapse
No announcement yet.

XML mit XML-Datenbindungsexperten einbinden

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • XML mit XML-Datenbindungsexperten einbinden

    Hallo,

    ich programmiere eindeutig zu selten. XML zu Fuß habe ich schon mal eingebunden, jetzt habe ich mir den Experten von Delphi XE mal den Code automatisch generieren lassen und ich scheitere am einfachen "durchblättern" der XML-Datei:
    <?xml version="1.0" encoding="UTF-8"?>
    <CodeBlock>
    <item>
    <title>MeinTitel</title>
    <code>Begin End;</code>
    <ID>0</ID>
    <language>0</language>
    </item>
    <item>
    <title>AnotherTitle</title>
    <code>procedure MyScript; Begin End; Run(MyScript);</code>
    <ID>1</ID>
    <language>0</language>
    </item>
    </CodeBlock>

    Ich habe dem Assistenden diese Datei mitgegeben und er generiert mir eine Unit. Mit dem Code sollte man lt.
    http://docwiki.embarcadero.com/RADSt...lcode_arbeiten
    arbeiten können.

    Mit
    procedure Irgendwas;
    var
    CodeBlock: IXMLCodeBlockType; / IXMLCodeBlockType aus automatisch generierter Unit
    begin
    CodeBlock := GetCodeBlock(xmlCodeBlocks); // GetCodeBlock aus automatisch generierter Unit.
    ShowMessage(CodeBlock.Item.Code);
    end;

    Kann ich auf das erste Element der XML-Datei zugreifen. Aber wie komme ich zu den weiteren Elementen? Ich schaffe es nicht, das durchzublättern. IXMLCodeBlockType(CodeBlock.NextSibling).Item.Code bringt mir eine Zugriffsverletzung. Ich weiß nicht wo ich "NextSibling-en" muss.

    Kann mir jemand helfen?

    Danke.

    CodeGier

  • #2
    Habe den XML-Code folgend abgeändert und dann den XML-Experten nochmal drüber laufen lassen:
    <?xml version="1.0" encoding="UTF-8"?>
    <CodeBlocks>
    <CodeBlock>
    <title>MeinTitel</title>
    <code>Begin End;</code>
    <ID>0</ID>
    <language>0</language>
    </CodeBlock>
    <CodeBlock>
    <title>AnotherTitle</title>
    <code>procedure MyScript; Begin End; Run(MyScript);</code>
    <ID>1</ID>
    <language>0</language>
    </CodeBlock>
    </CodeBlocks>

    Schwupps, jetzt hat der Experte auch eine Schnittstelle implementiert, mit der ich auf die einzelnen Elemente zugreifen kann:

    IXMLCodeBlocksType = interface(IXMLNodeCollection)
    ['{CF5F4369-D022-415F-9412-1972C90AAB9D}']
    { Eigenschaftszugriff }
    function Get_CodeBlock(Index: Integer): IXMLCodeBlockType;
    { Methoden & Eigenschaften }
    function Add: IXMLCodeBlockType;
    function Insert(const Index: Integer): IXMLCodeBlockType;
    property CodeBlock[Index: Integer]: IXMLCodeBlockType read Get_CodeBlock; default;
    end;

    Da ist der Experte wohl nicht so recht mit meiner XML-Datei zurechtgekommen. Jetzt klappts. Danke an alle die mitgelesen und sich den Kopf zerbrochen haben.

    CodeGier

    Comment

    Working...
    X