reading XLM file in Delphi (IXMLDocument) not working

Posted on 2014-03-11
Last Modified: 2014-03-11
I'm successfully writing an XML document with IXMLDocument which, slightly simplified, looks like this:
<?xml version="1.0"?>
<Subject>3 events scheduled starting 3/13 1:30 PM: Job 1034</Subject>
<sPersonIDs>10240; 175</sPersonIDs>
<MessageText>3/11, 3/12, 3/13 1:30 - 5:00 PM Water Damage Assigned to: Bilbo Baggins</MessageText>

Open in new window

My attempt to read the file looks like this:
procedure TChronEmail.GetFromTempFile;
    sFile : string;
    Doc: IXMLDocument;
    Email: IXMLNode;
  sFile := [filename--I've tested that it is valid and that it is there];
  if fileExists(sFile) then begin
    i := 0; // for this test, only need the first entry in the file
    Email := DOC.ChildNodes.Nodes['Email'].ChildNodes[i];
    Subject := Email.ChildNodes['Subject'].Text;
    if tryStrToInt(Email.ChildNodes['DeptID'].Text, i) then DeptID := i;
    sPersonIDs := Email.ChildNodes['sPersonIDs'].Text;
    MessageText := Email.ChildNodes['MessageText'].Text;

Open in new window

Apparently I'm missing something important since I'm not getting any values back out of my file. This is my first time working with IXMLDocument/IXMLNode, so happy for any guidance. Thanks.
Question by:EricTaylor
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 2
LVL 101

Expert Comment

ID: 39921263
Are you sure the code for the file found test is being run?

Is the childnode array dimensioned from 0 or 1?

LVL 46

Accepted Solution

aikimark earned 500 total points
ID: 39921404
Since I don't see any parent to the Email node(s), the following change should return results.
Email := DOC.ChildNodes.Nodes['Email'];

Open in new window

If the XML had been like the following...
<?xml version="1.0"?>
<Subject>3 events scheduled starting 3/13 1:30 PM: Job 1034</Subject>
<sPersonIDs>10240; 175</sPersonIDs>
<MessageText>3/11, 3/12, 3/13 1:30 - 5:00 PM Water Damage Assigned to: Bilbo Baggins</MessageText>

Open in new window

then your original statement should have been:
Email := DOC.ChildNodes.Nodes['Emails'].ChildNodes[i];

Open in new window

LVL 46

Expert Comment

ID: 39921427
Note: some XPathing might also get you the first Email item.
Simplifying Server Workload Migrations

This use case outlines the migration challenges that organizations face and how the Acronis AnyData Engine supports physical-to-physical (P2P), physical-to-virtual (P2V), virtual to physical (V2P), and cross-virtual (V2V) migration scenarios to address these challenges.


Author Closing Comment

ID: 39921591
Thanks. That did the trick and now I understand how the pieces are relating here.

I didn't understand the XPathing comment though; would appreciate if you would clarify to give me a better understanding.
LVL 46

Expert Comment

ID: 39921856

Maybe it would be better if I point you at some instructional material on XPath to get you up to speed. (tutorial) (syntax)

Since we're in a Delphi development environment, you would probably benefit from seeing some Delphi code examples that use XPath.  (Delphi example)  (lots of Delphi examples in this ebook/article)

If you are still stuck after playing with this, you can ask a new question about XPathing and your Delphi code.

Author Comment

ID: 39921985
thanks  :)

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In this article I discuss my selections of the Top Four free Outlook OST File Viewers available. Open, view and read even damaged OST files by using these tools. They all provide a clear preview of all data such as emails, notes, tasks, calendars, e…
The SignAloud Glove is capable of translating American Sign Language signs into text and audio.
The viewer will learn how to successfully download and install the SARDU utility on Windows 7, without downloading adware.
Six Sigma Control Plans
Suggested Courses
Course of the Month11 days, 1 hour left to enroll

628 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question