【发布时间】:2019-10-31 12:40:36
【问题描述】:
我正在尝试通过 git bash 在 Windows 机器上检索给定 XML 文件的节点结构。我几乎完全遵循了in this example 中提到的内容。
我正在运行与示例中相同的命令,即:
xml sel -T -t -m '//*' \
-m 'ancestor-or-self::*' -v 'name()' -i 'not(position()=last())' -o \
. -b -b -n structure.xml
此命令在 MAC 上运行良好(通过常规终端)。但是,当我通过 git bash 在 Windows 机器上运行它时,它只返回 XML 结构的根节点,而不是按预期返回整个树。
为了获得整个结构而运行的等效命令是什么?我尝试指定不同的 XPath 轴指定为 here,但无济于事。
编辑:
比如说,我有下面的 XML 结构
<node1>
<node2>
<node3>Whatever</node3>
</node2>
<node1>
上面的命令应该返回(就像在 MAC 上一样)
node1
node1.node2
node1.node2.node3
而在 Windows 上,它只是返回根节点,即node1
【问题讨论】:
-
您是否尝试根据您链接的主题中的其余答案更改属性?除了作为示例给出的代码之外,还有更多内容;)
-
当你说属性时,你是什么意思?我尝试了多个 XPath,例如“祖先”、“后代”、“子”等。
-
他们在 cmets 中提供了更多关于 xml 树显示的解决方案,所以我只是问您是否也尝试了那里的所有选项,以便我可以忽略它们并考虑其他事情:D
-
哦,是的,我已经尝试了这些选项。老实说,我上面提到的示例是完美的输出,因为它逐行显示所有节点的结构。这样,我可以获取结果并将其放入一个数组中,然后对每个节点执行我想要的操作。请查看我在问题中的编辑以了解我的意思。总而言之,是的,除了示例中提到的以外,请与我一起想一个解决方案:D
-
@RigaCrypto 我没有任何运气想出一个潜在的解决方案。有机会你能帮忙吗?
标签: xml bash shell xmlstarlet