如何让xmllint为"每行"属性输出xpath选择器的多个结果?
举个例子:
<?xml version="1.0" encoding="ISO-8859-1"?>
<config>
<tagX key1="value1 " key2=" value2"/>
<tagY key3="value3" key4=" value4 "/>
</config>
$ xmllint example.xml --xpath "/config/*/@*"
Run Code Online (Sandbox Code Playgroud)
结果是:
key1="value1 " key2=" value2" key3="value3" key4=" value4 "
Run Code Online (Sandbox Code Playgroud)
我想得到的是:
key1="value1 "
key2=" value2"
key3="value3"
key4=" value4 "
Run Code Online (Sandbox Code Playgroud)
我需要在偶数引号之后拆分,还是有更简洁的方法来做到这一点?
有一个相关的问题,关于相同的主题,除了它是关于挑选的内容<tag>value</tag>,而不是<tag attribute="value" />
我有一个由现有工具生成的HTML页面 - 我无法更改此工具的输出.
不过,我想使用xmllint与--xpath选项从下载的网页挑选出的信息数的某些片段.问题是该页面以:
<html lang=en><head>...
并xmllint立即抛出错误:
html.out:2: parser error : AttValue: " or ' expected
<html lang=en><head>
^
Run Code Online (Sandbox Code Playgroud)
这个问题肯定似乎是lang属性值周围缺少的引号.整个页面都充满了这种问题.(虽然只是零星的.)
几乎每个浏览器都可以解析这个问题 - 我怎么能说服xmllint这样做呢?我想避免必须注入一个中间步骤来"修复"该文件.相反,我想要:
1)找到一个标志,验证选项等,以帮助解析器,或:
2)使用其他一些工具.(但是什么?xmllint总是我的命令行XPath命令.)
此外,仅使用xpath结果:
> xpath html.out '//myquery...'
not well-formed (invalid token) at line 2, column 11, ...
Run Code Online (Sandbox Code Playgroud)