使用XPath删除元素

NoDisplayName

假设我有一个XML文件,并且想使用其XPath从该文件中删除一些节点。我将如何做到这一点,是有可能在首位,xmerl或者erlsom也许别的东西吗?

而且,如果XPath没有一种简单的方法,那么通常从XML删除元素的正确方法是什么?

阿列克谢·马蒂什金(Alexei Matiushkin)

W3C所述

XPath是一种用于处理XML文档各部分的语言

上面的字面意思XPath查询XML,而不是对其进行修改修改XML文档的常用方法是:

  • 使用XSLT转换架构;
  • 将内容读取到内存中,进行修改并将其保存回文件中。

AFAIU,前者不在这个问题的范围内。对于后者,可以使用Exsomlibrary,它是“ erlsomXML解析库周围的Elixir包装器”。

假设我们有xmlxsd摘自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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章