对于给定的XML文档,我想提取所有文本内容,不包括某些特定标记,并对内容进行一些转换,并将修改后的内容推回到它们所处的位置。
我尝试为文档生成一个树(说明嵌套map
),并在转换后,再次通过树构建文档。
但是我找不到任何我可以在golang中使用的库。
这可能吗?
更新
xml文档的结构不固定。
答案 0 :(得分:2)
基本上我可以想到三种方法:
定义一组与XML文档元素匹配的Go类型。 然后将文档解组为这些变量的层次结构。 然后应用于这些变量,无论需要什么更新 将它们编组回XML文档。
这种方法的优点在于它是“标准”(需要
只是encoding/xml
标准包)并且是“数据驱动的”。
缺点很多:
"SAX-style" processing:
encoding/xml
允许您“逐步”
每个XML节点 - 解析器对它们进行解码。
因此可以创建一个Decoder
读取源文档
和Encoder
- 生成结果。
由解码器解码的每个令牌由编码器编码
要么立即,要么经过一定的处理
(这可能会导致添加更多令牌)。
不幸的是,如果你需要维护一些上下文 访问不同的令牌(所以,比方说,只修改文本节点) 文档中某些路径上的元素), this is not doable easily (当然,尽管仍有可能)。
使用成熟的XSLT processing。
您可以查看this。