去除标签的xml文档,删除换行符并添加自定义换行符
Posted
技术标签:
【中文标题】去除标签的xml文档,删除换行符并添加自定义换行符【英文标题】:Stripping xml document of tags, removing line breaks and adding custom line breaks 【发布时间】:2010-09-18 20:44:06 【问题描述】:我向 xml Web 服务发出请求,然后得到响应。这个响应,作为一个流,然后被保存到一个字符串中。问题是,响应中充满了标签、CDATA 等(如您所料)。正如预期的那样,也没有换行。
我想获取这个代表 xml 文档的字符串,并去掉它的所有标签,但保留实际值,同时确保每条记录都在一行中,所以:
<Record>
<name>adam</name>
<telephoneno>000</telephonenumber>
</Record>
<Record>
<name>mike</name>
<telephoneno>001</telephonenumber>
</Record>
将转化为:
adam 000
mike 001
标题是一个简单的问题,但我怎样才能做到这一点?我已经尝试过数据表和数据集,但我认为它们对实现我想要做的事情没有很大的支持。
【问题讨论】:
【参考方案1】:这正是 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 对其进行了测试,它可以工作。
【讨论】:
一般来说,如果一个转换发出文本,你应该将 xsl:output 方法设置为“文本”。在这个特定的变换中它不会改变任何东西(尽管它会改变一些)。但我见过 XML 工具检查方法以查看它们是否应该检查输出的格式是否正确,您不希望这里出现这种情况。【参考方案2】:Michael Haren 的 XSLT 响应是最佳答案。
但是,如果您实际上并不想要 XML 形式的响应,您可以从 Web 服务返回您想要的任何内容(前提是它是您的,而不是第三方服务)。
没有规定 Web 服务必须返回 XML。只需确保提供适当的 MIME 类型即可。
【讨论】:
以上是关于去除标签的xml文档,删除换行符并添加自定义换行符的主要内容,如果未能解决你的问题,请参考以下文章
整合去除HTML 标签, 去除开头结尾换行,将连续空格合并为一个