如何忽略 xml 中不带引号的属性
how to ignore attribute without quotes in xml
我想统计tag1出现了多少次
提供此 123.xml 文件(从互联网流式传输)
<startend>
<tag1 name=myname>
<date>10-10-10</date>
</tag1 >
<tag1 name=yourname>
<date>11-10-10</date>
</tag1 >
</startend>
使用:xmlstarlet sel -t -v "count(//tag1)" 123.xml
输出:
AttValue: " 或 ' 预期
属性构造错误
如何忽略属性没有" "?
您输入的XML/HTML结构无效tags/attributes,应事先恢复:
xmlstarlet
解法:
xmlstarlet fo -o -R -H -D 123.xml 2>/dev/null | xmlstarlet sel -t -v "count(//tag1)" -n
输出:
2
详情:
fo (or format)
- 格式 XML 文档
-o or --omit-decl
- 省略 xml 声明
-R or --recover
- 尝试恢复可解析的内容
-D or --dropdtd
- 删除输入文档的 DOCTYPE
-H or --html
- 输入为 HTML
2>/dev/null
- 抑制 errors/warnings
XML 始终需要在属性值周围加上引号。如果您想继续使用 XML,您首先必须从输入中生成有效的 XML。您可以使用 SGML 处理器,例如 OpenSP(特别是 osx
程序)将您的输入格式化为格式良好的 XML。就像调用 osx <your Input file>
一样简单。
如果您使用 Ubuntu/Debian Linux,您可以通过在命令行上调用 sudo apt-get install opensp
来安装 osx
(在其他 Unix 系统上也是如此)。
我想统计tag1出现了多少次 提供此 123.xml 文件(从互联网流式传输)
<startend>
<tag1 name=myname>
<date>10-10-10</date>
</tag1 >
<tag1 name=yourname>
<date>11-10-10</date>
</tag1 >
</startend>
使用:xmlstarlet sel -t -v "count(//tag1)" 123.xml
输出:
AttValue: " 或 ' 预期 属性构造错误
如何忽略属性没有" "?
您输入的XML/HTML结构无效tags/attributes,应事先恢复:
xmlstarlet
解法:
xmlstarlet fo -o -R -H -D 123.xml 2>/dev/null | xmlstarlet sel -t -v "count(//tag1)" -n
输出:
2
详情:
fo (or format)
- 格式 XML 文档-o or --omit-decl
- 省略 xml 声明-R or --recover
- 尝试恢复可解析的内容-D or --dropdtd
- 删除输入文档的 DOCTYPE-H or --html
- 输入为 HTML2>/dev/null
- 抑制 errors/warnings
XML 始终需要在属性值周围加上引号。如果您想继续使用 XML,您首先必须从输入中生成有效的 XML。您可以使用 SGML 处理器,例如 OpenSP(特别是 osx
程序)将您的输入格式化为格式良好的 XML。就像调用 osx <your Input file>
一样简单。
如果您使用 Ubuntu/Debian Linux,您可以通过在命令行上调用 sudo apt-get install opensp
来安装 osx
(在其他 Unix 系统上也是如此)。