Kim*_*ais 6 python xml bash editor sed
我知道这是一个边缘情况,它是否真的属于stackoverflow或超级用户,但因为这里似乎有很多"编辑代码"问题,我在SO上发布它.
我有一堆XML文件,他们无限智慧的人决定使用标签爆炸到多个文件,结果使调试/编辑它们成为巨大的PitA.因此我在寻找:
顶级包含的文件可能包括新文件等等,谁知道有多少级别,所以这需要递归...
这是关于顶级文件的样本示例:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE foobar PUBLIC "foobar:dtd" "foobar.dtd" [
<!ENTITY foo SYSTEM "foo.xml">
<!ENTITY bar SYSTEM "bar.xml">
]>
<foo>
<params>
&foo;
</params>
<bar>
&bar;
</bar>
</foo>
Run Code Online (Sandbox Code Playgroud)
编辑:列表按优先顺序排列 - 如果没有1.或2.解决方案可用,赏金最好的#3 ...
编辑2:看起来@Gaby的答案有效,但不幸的是只是部分,除非我做错了 - 我会用他的答案写一些工具并在此处发布以进行改进.当然,#1或#2解决方案将不胜感激...... :)
编辑3:好的,最好的非Emacs -answer将获得赏金;)
结论:感谢@hcayless,我现在有一个工作#2解决方案,我补充说:
autocmd BufReadPost,FileReadPost *.xml silent %!xmllint --noent - 2> /dev/null
Run Code Online (Sandbox Code Playgroud)
对我而言.vimrc,一切都是笨拙的.
小智 5
如果您安装了libxml2,那么xmllint可能会为您执行此操作.根据您的设置,您可能需要更多参数,但对于您的示例,
xmllint --noent foobar.xml
Run Code Online (Sandbox Code Playgroud)
将所有实体解析后,将文件打印到stdout.应该很容易包装一些bash脚本来做它你需要的东西.