我想从XML文件中删除一个节点(使用SaxonHE9-8-0-11J):
WearableRecyclerView slots_rv = findViewById(R.id.slots_rv);
.....
WearableLinearLayoutManager wearableLinearLayoutManager =
new WearableLinearLayoutManager(this, customScrollingLayoutCallback);
slots_rv.setLayoutManager(
wearableLinearLayoutManager);
slots_rv.setCircularScrollingGestureEnabled(true);
wearableLinearLayoutManager.scrollToPosition(slotsAdapter.getPositionToFocus());
slots_rv.scrollToPosition(slotsAdapter.getPositionToFocus());
slots_rv.getLayoutManager().scrollToPosition(slotsAdapter.getPositionToFocus());
slots_rv.setAdapter(slotsAdapter);
显然,do this有两种方法。 XPath1:使用not函数 XPath2:使用except子句。但是两者都只是返回整个节点集。
具有not功能:
let a = { x:{z:1} , y: 2};
let b = JSON.parse(JSON.stringify(a))
带有except子句:
<project name="Build">
<property name="src" value="src/main/resources" />
<property name="target" value="target/classes" />
<condition property="target.exists">
<available file="target" />
</condition>
</project>
使用-explain开关,查询为:
saxonb-xquery -s:test.xml -qs:'*[not(local-name()="condition")]'
和
saxonb-xquery -s:test.xml -qs:'* except condition'
答案 0 :(得分:1)
通常,XPath从一个或多个输入文档中选择节点,它不允许您构造新的节点,因为您需要XSLT或XQuery。并且,如果要达到此目的,则除去condition
根的project
子级,即使使用/*/(* except condition)
,也需要使用XPath对XSLT或XQuery进行操作。然后获取除condition
元素之外的所有子元素,但要作为一个序列,而不是包装到根中。
因此,您可以使用XQuery
/*/element {node-name()} { * except condition }
作为一种紧凑但通用的方式来重建除condition
:https://xqueryfiddle.liberty-development.net/948Fn5b
是否通过命令行shell获得这样的表达式是一个不同的问题,在具有Powershell窗口和cmd shell的Windows上,它可以供我使用
-qs:"/*/element {node-name()} { * except condition }"