因此,假设我有一个XML文件,我想使用他们的XPath从中删除一些节点。我如何做到这一点,是否可能首先使用xmerl
或erlsom
或其他可能的东西?
如果XPath没有简单的方法,那么从XML中删除元素的正确方法是什么?
答案 0 :(得分:2)
XPath是一种用于处理XML文档部分的语言
以上字面意思是XPath
是查询 XML,而不是修改它。修改XML文档的常用方法是以下方法之一:
AFAIU,前者超出了本问题的范围。对于后者,可以使用Exsom
library,这是“erlsom
XML解析库周围的Elixir包装器。”
假设我们从Excom
examples获取了xml
和xsd
:
<?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
写入文件。