Board logo

标题: [文本处理] 批处理如何删除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

  1. 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

  1. 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正则实现:
  1. Dim FSO, vbStr
  2. Set FSO = CreateObject("Scripting.FileSystemObject")
  3. vbStr = FSO.OpenTextFile("test.xml").ReadAll()
  4. FSO.OpenTextFile("new.xml", 2, True).Write RegEx(vbStr)
  5. MsgBox "ok"
  6. Set FSO = Nothing
  7. Function RegEx(Str)
  8.   Set RegEx = New RegExp
  9.   RegEx.IgnoreCase = True
  10.   RegEx.Global = True
  11.   RegEx.Pattern = "(.*)<item.*\/item>(.*)"
  12.   RegEx = RegEx.Replace(vbStr, "$1$2")
  13. End Function
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2