剥离标签的xml文档,删除换行符和添加自定义换行符

时间:2008-10-23 19:07:24

标签: c# regex

我向xml Web服务发出请求,并获得响应。然后将此响应(作为流)保存为字符串。问题是,响应中充满了标签,CDATA等(正如您所期望的那样)。正如预期的那样,也没有任何突破。

我想接受这个表示xml文档的字符串,并删除它的所有标记,但保留实际值,并确保每条记录都在一行中,所以:

<Record>
  <name>adam</name>
  <telephoneno>000</telephonenumber>
</Record>
<Record>
  <name>mike</name>
  <telephoneno>001</telephonenumber>
</Record>

将转变为:

adam 000
mike 001

标题是一个简单的问题,但我怎么能实现这一目标?我已经尝试了数据表和数据集,但我不认为他们对实现我想要做的事情有很大的支持。

2 个答案:

答案 0 :(得分:7)

这正是XSLT的用途!它将XML文件转换为不同的输出。在您的情况下,您可以使用相对简单的XSL转换来输出列表。

这可能会这样做:

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>

我使用this tool对其进行了测试,但确实有效。

答案 1 :(得分:0)

Michael Haren的XSLT响应是最好的答案。

但是,如果您实际上并不希望将响应作为XML,则可以返回您希望从Web服务获得的任何内容(前提是它是您的,而不是第三方服务)。

没有规则说Web服务必须返回XML。只需确保提供适当的MIME类型。