XML处理需求:空tbody所在table替换为‘no data available’
解决XML中空
<tbody>表格替换需求 推荐使用XSLT来处理这个XML转换任务,它是专门针对XML文档结构转换的工具,能精准实现你要的逻辑:当<text>标签内的<table>包含空的<tbody />节点时,把整个<table>替换成文本no data available。
完整XSLT代码
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <!-- 身份模板:默认复制所有节点和属性 --> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> <!-- 匹配符合条件的<table>:位于<text>下,且包含空的<tbody> --> <xsl:template match="text/table[tbody[not(node())]]"> <xsl:text>no data available</xsl:text> </xsl:template> </xsl:stylesheet>
代码解释
- 身份模板:这是XSLT的基础模板,作用是原样复制XML中所有未被特殊模板匹配的节点和属性,保证其他内容(比如示例里的
<title>标签)不受影响。 - 匹配模板:专门定位
<text>标签下的<table>元素,并且检查它的<tbody>是否没有任何子节点(也就是空的<tbody />)。一旦匹配成功,就输出指定文本代替整个<table>。
示例验证
输入XML
<title>Payers</title> <text> <table border="1" width="100%"> <thead> <tr> <th>Payer Name</th> <th>Policy Type</th> <th>Policy Number</th> <th>Effective Date</th> <th>Expiration Date</th> </tr> </thead> <tbody /> </table> </text>
输出XML
<title>Payers</title> <text> no data available </text>
你可以用任何支持XSLT的工具(比如Saxon、Xalan这类库,或者一些在线XML转换工具)来运行这段代码,就能得到你想要的结果啦。
内容的提问来源于stack exchange,提问作者Nishant Makwana
相关产品推荐
相关产品推荐

