野姑娘。如果我编写了这个包装器,我可以按照上面描述的方式调用包装器:
#!/usr/bin/ruby
require 'nokogiri'
Nokogiri::XML(STDIN).xpath(ARGV[0]).each do |row|
puts row
end
XML::XPath。可以使用此包装:
#!/usr/bin/perl
use strict;
use warnings;
use XML::XPath;
my $root = XML::XPath->new(ioref => 'STDIN');
for my $node ($root->find($ARGV[0])->get_nodelist) {
print($node->getData, "\n");
}
XML::XPath中的XPath
返回太多噪声、--node--
和attribute=“value”
。
echo cat//element/@attribute xmllint--shell filename.xml
返回与XPath
类似的噪声。
xmllint--xpath//element/@attribute filename.xml
返回attribute=“value”
。
xmllint--xpath'string(//element/@attribute)'filename.xml
返回所需的内容,但仅针对第一个匹配项。
对于几乎满足这个问题的另一个解决方案,这里有一个XSLT,可以用来计算任意XPath表达式(需要XSLT处理器中的dyn:evaluate支持):
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns:dyn="http://exslt.org/dynamic" extension-element-prefixes="dyn">
<xsl:output omit-xml-declaration="yes" indent="no" method="text"/>
<xsl:template match="/">
<xsl:for-each select="dyn:evaluate($pattern)">
<xsl:value-of select="dyn:evaluate($value)"/>
<xsl:value-of select="' '"/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
使用xsltproc--StringParam pattern//element/@attribute--StringParam value运行。任意-xpath.xslt filename.xml
。
您应该尝试以下工具:
XMLStarlet
:可以编辑、选择、转换...默认情况下未安装,xpath1XMLLint
:通常默认情况下与libxml2-utils
、xpath1一起安装(检查我的包装器是否在非常旧的版本和换行分隔输出(v<2.9.9)--XPath
开关
XPath
:通过Perl的模块XML::XPath
,XPath1xml_grep
:通过Perl的模块xml::twig
,xpath1(有限的xpath用法)xidel
:XPath3saxon-lint
:我自己的项目,@Michael Kay的Saxon-HE Java库的包装器,XPath3xmllint
附带libxml2-utils
(可与--shell
开关一起用作交互式shell)
XMLStarlet
是XMLStarlet
。
XPath
附带了Perl的模块XML::XPath
xml_grep
附带了Perl的模块xml::twig
例:
xmllint --xpath '//element/@attribute' file.xml
xmlstarlet sel -t -v "//element/@attribute" file.xml
xpath -q -e '//element/@attribute' file.xml
xidel -se '//element/@attribute' file.xml
saxon-lint --xpath '//element/@attribute' file.xml
.
问题内容: 我尝试谷歌搜索答案,但没有运气。 我需要使用我的超级计算机服务器,但是要运行我的python脚本,必须通过shell脚本执行。 例如我要执行 如何做到这一点? 问题答案: 只需确保python可执行文件在PATH环境变量中,然后在脚本中添加 细节: 在文件job.sh中,放入 执行此命令以使脚本可运行: 运行 :
问题内容: 我有一个使用WINE在Linux上运行的Windows程序。 如何从Windows程序调用Linux Shell命令? 问题答案: 编辑:user1182474的评论是正确的; Wine不会隔离它运行的程序。(它试图隐藏它,但不是很彻底。)我完全无法使用Google。Psen在下面的评论更正确,并引用了FAQ。(请注意,要使其正常工作,您可能需要通过Wine驱动器映射获得程序的目录。或
问题内容: 我需要从Django Shell执行Python脚本。我试过了: 但这没有用。只是在等我写东西。 问题答案: 该<<部分有误,请<改用: 你也可以这样做: 对于python3,你需要使用
我需要从Django shell执行一个Python脚本。我试过: 但是没有成功。它只是在等我写些什么。
问题内容: 如何在Linux中从C执行Shell脚本? 问题答案: 这取决于您要对脚本(或要运行的任何其他程序)执行的操作。 如果只想运行脚本,这是最容易的事情,但是它也做其他一些事情,包括运行shell并让其运行命令(在大多数* nix下是/ bin / sh)。 如果您要通过标准输入来输入shell脚本或使用其标准输出,则可以使用(和)设置管道。这也使用外壳程序(大多数* nix下是/ bin
我有一个案例,我想问我可以解决与Spring壳。我有一个Main.jar应用程序,它有几个部署在Wildly服务器上的Spring任务。在我的例子中,我不能停止或重新部署main.jar,因为必须不停地提供服务。