<p>I make a request to an xml web service, and get back a response. This response, being a stream, is then saved to a string. The problem is, the response is full of tags, CDATA, etc (as you would expect). There is no line breaking either, as to be expected.</p>

<p>I want to take this string, which represents an xml document, and strip it of all its tags but keep the actual values, and also, make sure that each record is in one line, so:</p>

<pre><code>&lt;Record&gt;
  &lt;name&gt;adam&lt;/name&gt;
  &lt;telephoneno&gt;000&lt;/telephonenumber&gt;
&lt;/Record&gt;
&lt;Record&gt;
  &lt;name&gt;mike&lt;/name&gt;
  &lt;telephoneno&gt;001&lt;/telephonenumber&gt;
&lt;/Record&gt;
</code></pre>

<p>Will be transformed to:</p>

<pre><code>adam 000
mike 001
</code></pre>

<p>Headings is an easy issue, but how could I achieve this? I've tried datatables and datasets but I don't think they have great support for achieving what I am trying to do.</p>

This is exactly what XSLT is for! It transforms XML files into a different output. In your case, you could use a relatively simple XSL transformation to output a list.
This might do it:
records.xml:
```
```
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="style.xsl"?>
<Records>
  <Record>
    <name>adam</name>
    <telephonenumber>000</telephonenumber>
  </Record>
  <Record>
    <name>mike</name>
    <telephonenumber>001</telephonenumber>
  </Record>
</Records>
```
```
style.xsl
```
```
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output method="text" omit-xml-declaration="yes" indent="no"/>
  <xsl:template match="Record">
    <xsl:value-of select="name"/><xsl:text> </xsl:text><xsl:value-of select="telephonenumber"/>
  </xsl:template>
</xsl:stylesheet>
```
```
I tested it with
this tool
and it works.