从xml替换文本内容并推回到golng

时间:2018-03-26 14:00:06

标签: xml go

对于给定的XML文档,我想提取所有文本内容,不包括某些特定标记,并对内容进行一些转换,并将修改后的内容推回到它们所处的位置。

我尝试为文档生成一个树(说明嵌套map),并在转换后,再次通过树构建文档。

但是我找不到任何我可以在golang中使用的库。

这可能吗?

更新

xml文档的结构不固定。

1 个答案:

答案 0 :(得分:2)

基本上我可以想到三种方法:

  • 定义一组与XML文档元素匹配的Go类型。 然后将文档解组为这些变量的层次结构。 然后应用于这些变量,无论需要什么更新 将它们编组回XML文档。

    这种方法的优点在于它是“标准”(需要 只是encoding/xml标准包)并且是“数据驱动的”。

    缺点很多:

    • 编写一组类型可能会很繁琐。
    • 可能很难为案件工作 当你的文件有动态结构或案件时 当你真的只想考虑所有元素及其文本节点时。
  • "SAX-style" processingencoding/xml允许您“逐步” 每个XML节点 - 解析器对它们进行解码。

    因此可以创建一个Decoder读取源文档 和Encoder - 生成结果。 由解码器解码的每个令牌由编码器编码 要么立即,要么经过一定的处理 (这可能会导致添加更多令牌)。

    不幸的是,如果你需要维护一些上下文 访问不同的令牌(所以,比方说,只修改文本节点) 文档中某些路径上的元素), this is not doable easily (当然,尽管仍有可能)。

  • 使用成熟的XSLT processing

    您可以查看this