标题: [文本处理] 批处理如何删除xml文件里的指定标签/节点/元素? [打印本页]
作者: sanreal 时间: 2012-3-20 13:43 标题: 批处理如何删除xml文件里的指定标签/节点/元素?
本帖最后由 pcl_test 于 2017-4-30 08:05 编辑
某XML文件,需要删除里面的<item></item>全部节点内容~~
然后将该XML文件设置成为只读方式
请问该怎么弄!?啊!?
我需要一个BAT文件,然后群发给这四十多人!~如果因为版本不对我再自己去手工操作,那就失去了意义了。。。。。。小弟不懂这些。。。。。望高手路过
作者: sanreal 时间: 2012-3-20 14:55
没人知道吗?!~?
作者: sanreal 时间: 2012-3-20 16:34
晕死了。。怎么没人理!?
作者: find 时间: 2012-3-20 18:54
请把你的XML文件压缩一下传上来,我测试一下代码。
作者: sanreal 时间: 2012-3-21 09:44
回复 4# find
传上来了
作者: apang 时间: 2012-3-21 10:47
回复 5# sanreal
上传的附件不含<item></item>节点,楼主怎么回事?
作者: sanreal 时间: 2012-3-21 14:38
回复 6# apang
重新传了,,先开始搞错了,传的那个是我手工删除了ITEM节点的
作者: sanreal 时间: 2012-3-21 16:05
还有人在吗?
作者: CrLf 时间: 2012-3-21 17:25
- sed "s/<item>[^<]*<\/item>//g" test.xml>out.xml
复制代码
作者: sanreal 时间: 2012-3-22 09:07
不对啊~!这个运行了,输出了一个空白的out.xml
我这是需要输出一个删出了<item></item>节点的test.xml覆盖原来的test.xml,然后将其改为只读~
作者: find 时间: 2012-3-22 10:58
回复 10# sanreal
你用的哪个版本的sed?
作者: sanreal 时间: 2012-3-22 13:48
我需要在四十多台电脑里运行这个,每个电脑都不一样,所以。。。
作者: sanreal 时间: 2012-3-22 16:23
高手高手。。。。快来快来!~~谢了~!~~
作者: terse 时间: 2012-3-22 18:54
- sed -i "s/<item[^>]*><\/item>//g" "test.xml"
复制代码
作者: find 时间: 2012-3-22 20:46
回复 12# sanreal
所以神马?
作者: sanreal 时间: 2012-3-23 08:12
所以我需要一个BAT文件,然后群发给这四十多人!~如果因为版本不对我再自己去手工操作,那就失去了意义了。。。。。。小弟不懂这些。。。。。望高手路过。。。。
作者: find 时间: 2012-3-23 13:04
回复 17# sanreal
把bat文件和sed.exe打包之后一起群发
作者: sanreal 时间: 2012-3-23 16:29
能否搞在一起啊!?我们这有好多人连解压缩都不会!~
作者: sanreal 时间: 2012-3-25 13:25
哎,算了。。四五天了,还搞不好。。还是一个一个弄算了
作者: zqz0012005 时间: 2012-3-25 20:18
回帖的人中没有会vbs/js的吗?为什么一定要别人下载sed呢?
作者: find 时间: 2012-3-25 21:48
回复 19# sanreal
那就不压缩,两个文件直接发布。
作者: batman 时间: 2012-3-27 08:33
望高手路过。。。。
这句话很有意思的说。。。
作者: caruko 时间: 2012-3-27 14:59
本帖最后由 caruko 于 2012-3-27 15:00 编辑
高手也不能让bat全能..
不用sed,要输出 <> 这种字符何其麻烦。
作者: batman 时间: 2012-3-27 17:32
用vbs正则实现:- Dim FSO, vbStr
- Set FSO = CreateObject("Scripting.FileSystemObject")
- vbStr = FSO.OpenTextFile("test.xml").ReadAll()
- FSO.OpenTextFile("new.xml", 2, True).Write RegEx(vbStr)
- MsgBox "ok"
- Set FSO = Nothing
-
- Function RegEx(Str)
- Set RegEx = New RegExp
- RegEx.IgnoreCase = True
- RegEx.Global = True
- RegEx.Pattern = "(.*)<item.*\/item>(.*)"
- RegEx = RegEx.Replace(vbStr, "$1$2")
- End Function
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |