我真的需要你的帮助。我有一个xml-log文件,我必须解析哪些内容信息。
这样的xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<results>
<error file="mixed.cpp" line="11" id="unreadVariable" severity="style" msg="Variable 'wert' is assigned a value that is never used."/>
<error file="*" line="0" id="unmatchedSuppression" severity="style" msg="Unmatched suppression: missingIncludeSystem"/>
</result>
我必须将其解析为html表。我创建了一个blanco html: 错误摘要
<thead>
<tr>
<th>Filename</th>
<th>Line</th>
<th>Testname</th>
<th>Severity</th>
<th>Severity_description</th>
</tr>
</thead>
<tbody>
</table>
所以我尝试读出xml mixed.cpp ,将其填入文件名
这是我的shell脚本(仅适用于Filename,因为它仍无效):
#!/bin/bash
INPUT=./static-code-analysis.xml
OUTPUT=./mixed_output.html
LINE_XML=3
while read LINE_XML
do
FILENAME=$(grep 'error file' $LINE_XML | awk -F\" '{print $2}')
sed '/<tbody>/ a <tr> <td>$FILENAME</td> </tr>'
$OUTPUT >abc
done < $INPUT
我想在前面的单词错误文件的每一行中抛出所有行,然后删除 mixed.cpp 并将其保存在FILENAME中。< / p>
不幸的是它不起作用。 FILENAME仍然是空的,我无法填写HTML。
有人能说我卡在哪里吗?非常感谢;)
答案 0 :(得分:2)
给出一个像这样的XSLT模板:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/results">
<html>
<body>
<table>
<thead>
<tr>
<th>Filename</th>
<th>Line</th>
<th>Testname</th>
<th>Severity</th>
<th>Severity_description</th>
</tr>
</thead>
<tbody>
<xsl:apply-templates select="error"/>
</tbody>
</table>
</body>
</html>
</xsl:template>
<xsl:template match="error">
<tr>
<td><xsl:value-of select="@file"/></td>
<td><xsl:value-of select="@line"/></td>
<td><xsl:value-of select="@id"/></td>
<td><xsl:value-of select="@severity"/></td>
<td><xsl:value-of select="@msg"/></td>
</tr>
</xsl:template>
</xsl:stylesheet>
...和errors.xml
一样(我必须修复原始语法,在一个地方使用results
,在另一个地方使用result
):
<?xml version="1.0" encoding="UTF-8"?>
<results>
<error file="mixed.cpp" line="11" id="unreadVariable" severity="style" msg="Variable 'wert' is assigned a value that is never used."/>
<error file="*" line="0" id="unmatchedSuppression" severity="style" msg="Unmatched suppression: missingIncludeSystem"/>
</results>
......以下命令:
xsltproc template.xsl errors.xml
...会发出一个看起来像你要求的HTML文件。