目前的工作需要转换一些 XML 的结构,具体来说的话是这样:
这是转换前的结构,<hrow>节点下固定有两个子节点,第一个子节点固定是<hi>,节点的值是 A ,第二个节点固定是<htag>,<htag>也固定有两个子节点,不过节点类型没有限制,这两个节点的值是 B 和 C 。准确的来说这个需要转换的结构的判定标准是“<hrow>节点下的第 2 个子节点是<htag>”
<hrow>
<hi>A</hi>
<htag>
<hi>B</hi>
<hi>C</hi>
</htag>
</hrow>
这是转换后前的结构,<hrow>节点下还是固定有两个子节点,第一个子节点替换为固定<hsub>,节点的值是 A 和 B ,第二个替换为固定<hi>,节点的值是 C
<hrow>
<hsub>
<hi>A</hi>
<hi>B</hi>
</hsub>
<hi>C</hi>
</hrow>
这样的结构会在 XML 中出现(而不是一整个完整的 XML ),需要找到 XML 中对应的结构并替换。此外也有可能出现嵌套结构的情况,比如这样:
<hrow>
<hi>A</hi>
<htag>
<hrow>
<hi>B</hi>
<htag>
<hi>C</hi>
<hi>D</hi>
</htag>
</hrow>
<hi>E</hi>
</htag>
</hrow>
这个结构按照规则转换过来是这样:
<hrow>
<hsub>
<hi>A</hi>
<hrow>
<hsub>
<hi>B</hi>
<hi>C</hi>
</hsub>
<hi>D</hi>
</hrow>
</hsub>
<hi>E</hi>
</hrow>
感觉这是个涉及到数据结构的问题,不过因为没有实际学过所以做起来有点棘手。之前也试过用正则表达式,但是应该不够用,也了解过 XSLT ,似乎也不太能很好的解决问题,目前看来是真的只能用 DOMParser 读取 XML 然后操作树了?这个就真的没什么思路了,求 V 友们指点一下
1
viakiba 2022-07-19 18:40:25 +08:00
js 里 也有 xpath ,应该能组合出你的需求
|
2
fnmain 2022-07-19 18:45:13 +08:00
cheerio https://cheerio.js.org/
|
3
duan602728596 2022-07-19 21:10:51 +08:00
DOMParser 现成的解析器为啥就不能用了?你这个本来就是要操作树啊,换哪个解析器都是这个操作啊
|