C# 剥离xml文档中的标记,删除换行符并添加自定义换行符
我向一个XMLWeb服务发出请求,并得到响应。该响应是一个流,然后保存为字符串。问题是,响应中充满了标签、CDATA等(正如您所期望的)。正如预期的那样,也没有断线 我想取这个字符串,它表示一个xml文档,去掉它的所有标记,但保留实际值,并且确保每个记录都在一行中,因此:C# 剥离xml文档中的标记,删除换行符并添加自定义换行符,c#,regex,C#,Regex,我向一个XMLWeb服务发出请求,并得到响应。该响应是一个流,然后保存为字符串。问题是,响应中充满了标签、CDATA等(正如您所期望的)。正如预期的那样,也没有断线 我想取这个字符串,它表示一个xml文档,去掉它的所有标记,但保留实际值,并且确保每个记录都在一行中,因此: <Record> <name>adam</name> <telephoneno>000</telephonenumber> </Record> &
<Record>
<name>adam</name>
<telephoneno>000</telephonenumber>
</Record>
<Record>
<name>mike</name>
<telephoneno>001</telephonenumber>
</Record>
标题是一个简单的问题,但我如何才能做到这一点?我尝试过数据表和数据集,但我认为它们对实现我的目标没有太大的支持。这正是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>
亚当
000
迈克
001
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>
我用进行了测试,结果很好。Michael Haren的XSLT响应是最好的答案 但是,如果您实际上不希望响应是XML,那么您可以从web服务返回您想要的任何内容(前提是它是您的,而不是第三方服务)
没有规定web服务必须返回XML。只需确保提供适当的MIME类型。通常,如果转换发出文本,则应将xsl:output方法设置为“text”。在这个特定的转换中,它不会改变任何东西(尽管它会改变一些)。但是我看到过一些XML工具,它们检查方法,看是否应该检查输出的格式是否良好,这在这里是不需要的。
<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>