A notice at the beginning: Also my opinion is that XML is fine as intermediary file-format, useable in automated processing, and for small enough problems.
AFAIK the sample in the OP is not a well-formed XML document as it lacks a root element. Let's say it looks more like this:
<?xml version="1.0" encoding="UTF-8"?>
<dialogtree>
<dialog id='1'>
<message name="Boss" text="Testing the dialog system!"></message>
<response condition="True" nextDialogue='2'>
response text
</response>
<response condition="False" nextDialogue='3'>
response text
</response>
</dialog>
<dialog id='2'>
<message name="Boss" text="Testing the dialog system!"></message>
<response condition="True" nextDialogue='4'>
response text
</response>
<response condition="False" nextDialogue='5'>
response text
</response>
</dialog>
</dialogtree>
Looking into the DOM the standard way is done by using XPath. There is TinyXPath, not exactly an active project, but the features you need are not challenging, so good chances are it will work fine for you. Then looking for the <dialog> with id=2 would then use an expression like
/dialogtree/dialog[@id='2']
if the level of the dialog element is known, or perhaps
//dialog[@id='2']
if not. However, on success it returns the addressed node.
Of course, XPath is sufficiently complex in itself. Iterating the DOM "manually" using TinyXML's build-in TiXmlVisitor class is possible, too. Your specialized class instance then decides on a node-by-node basis whether the currently visited node is the wanted one, and remembers the once found node. This is, AFAIS, the way of doing things as is intended by TinyXML itself.
Not related to browsing DOM, but nevertheless worth mentioning: whitespace handling. In a declaration like this (notice the indentation just made to let XML look user friendly)
<response condition="False" nextDialogue='3'>
response text
</response>
is the text you want to display with whitespace like in this string (also notice the line break, please)
" response text
"
or without leading and trailing whitespace like in this string
"response text"
The distinction between wanted and unwanted leading and trailing whitespace is not really possible here. A better approach would be to make all text() within respective nodes be wanted text, so that the given example would probably look e.g. so:
<response condition="False" nextDialogue='3'>response text</response>