Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 剥离xml文档中的标记,删除换行符并添加自定义换行符_C#_Regex - Fatal编程技术网

C# 剥离xml文档中的标记,删除换行符并添加自定义换行符

C# 剥离xml文档中的标记,删除换行符并添加自定义换行符,c#,regex,C#,Regex,我向一个XMLWeb服务发出请求,并得到响应。该响应是一个流,然后保存为字符串。问题是,响应中充满了标签、CDATA等(正如您所期望的)。正如预期的那样,也没有断线 我想取这个字符串,它表示一个xml文档,去掉它的所有标记,但保留实际值,并且确保每个记录都在一行中,因此: <Record> <name>adam</name> <telephoneno>000</telephonenumber> </Record> &

我向一个XMLWeb服务发出请求,并得到响应。该响应是一个流,然后保存为字符串。问题是,响应中充满了标签、CDATA等(正如您所期望的)。正如预期的那样,也没有断线

我想取这个字符串,它表示一个xml文档,去掉它的所有标记,但保留实际值,并且确保每个记录都在一行中,因此:

<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>