假设我有一个XML文件,并且想使用其XPath从该文件中删除一些节点。我将如何做到这一点,是有可能在首位,xmerl
或者erlsom
也许别的东西吗?
而且,如果XPath没有一种简单的方法,那么通常从XML删除元素的正确方法是什么?
如W3C所述,
XPath是一种用于处理XML文档各部分的语言
上面的字面意思XPath
是查询XML,而不是对其进行修改。修改XML文档的常用方法是:
AFAIU,前者不在这个问题的范围内。对于后者,可以使用Exsom
library,它是“ erlsom
XML解析库周围的Elixir包装器”。
假设我们有xml
和xsd
摘自Excom
示例:
<?xml version="1.0" encoding="UTF-8"?>
<foo attr="yo">
<bar>1</bar>
<bar>2</bar>
</foo>
一个人可能会做这样的事情来删除第二个bar
节点(大部分代码是从Excom
测试中直接获取的:
{ :ok, model } = Exsom.XSD.File.parse("complex.xsd")
{ :ok, instance, _ } = Exsom.File.parse("complex.xml", model)
#⇒ {:ok, {:foo_type, [], 'yo', ['1', '2']}}
根据您的需要对其进行修改,例如,bar
使用2
instance = {:foo_type, [], 'yo', ['1']}
{ :ok, binary_xml } = Exsom.compose(instance, model, [{ :output, :binary }])
#⇒ {:ok, "<foo attr=\"yo\"><bar>1</bar></foo>"}
现在您可以将写入binary_xml
文件。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句