标题: [文本处理] [已解决]如何删除xml文件指定段落? [打印本页]
作者: freesoft00 时间: 2015-3-26 10:16 标题: [已解决]如何删除xml文件指定段落?
本帖最后由 freesoft00 于 2015-11-2 20:29 编辑
文件的内容大致如上,xml文本中的一段(我不知道是不是这样的叫法)
文件是utf-8 无bom应该
删除指定的片段:
TCPIP Parameters
Current User
Network Connections
作者: freesoft00 时间: 2015-3-26 10:19
我想纯批处理也许不好处理,不知道是否有第三方软件可以完成。
utf-8文本不好处理也可以转换为ansi,处理完成后再转换回去。
作者: pcl_test 时间: 2015-3-26 12:18
本帖最后由 pcl_test 于 2015-3-26 12:45 编辑
回复 2# freesoft00
意思是删除有这样特征的内容段?
开头<NODE NAME="SUBSECTION"
……
结尾</NODE>- ::测试前先备份原文件
- @echo off & setlocal enabledelayedexpansion
- for /f "delims=" %%a in ('dir /b *.xml') do (
- set n=0
- (for /f "delims=" %%b in ('type "%%a"') do (
- set "str=%%b"
- set "str=!str: =!"
- set "str=!str:锘?=!"
- if "!str:~1,21!" == "NODENAME="SUBSECTION"" set n=1
- if "!str:~1,5!" == "/NODE" set n=0
- if "!str:~1,5!" neq "/NODE" if !n! ==0 echo,%%b
- )
- echo, ^</NODE^>
- )>$
- move $ "%%a"
- )
- pause
复制代码
作者: freesoft00 时间: 2015-3-26 13:10
本帖最后由 freesoft00 于 2015-3-26 13:12 编辑
回复 3# pcl_test
<NODE NAME="SUBSECTION" VALUE="hosts"完整的关键字应该是这个,还有这个 <NODE NAME="SUBSECTION" VALUE="User"
单纯的<NODE NAME="SUBSECTION"有好多是不需要删除的,所以这样不行。
也许还有其它的关键字,<NODE NAME="network" 比如这个
作者: pcl_test 时间: 2015-3-26 13:15
本帖最后由 pcl_test 于 2015-3-26 13:30 编辑
回复 4# freesoft00
那你要把特征说明白,不然怎么匹配?在顶楼把要删除的内容段的特征描述清楚并上传一份完整的xml文件
作者: pcl_test 时间: 2015-3-26 14:01
本帖最后由 pcl_test 于 2015-11-2 18:35 编辑
回复 4# freesoft00 - /*&cls
- @echo off
- dir /b 151104.xml|cscript -nologo -e:jscript "%~f0"
- pause&exit/b
- */
-
- function loadText(strFileIn,strCharset){
- var stream = new ActiveXObject('ADODB.Stream');
- stream.Type = 2;
- stream.Mode = 3;
- stream.Charset = strCharset;
- stream.Open();
- stream.LoadFromFile(strFileIn);
- stream.Position = 0;
- return stream.ReadText;
- }
-
- function saveText(strArg,strFileOut,strCharset){
- var stream = new ActiveXObject('ADODB.Stream');
- stream.Mode = 3;
- stream.Type = 2;
- stream.Charset = strCharset;
- stream.Open();
- stream.WriteText(strArg);
- return stream.SaveToFile(strFileOut,2);
- }
-
- while(!WScript.StdIn.AtEndOfStream){
- var file = WScript.StdIn.ReadLine();
- var HtmlText = loadText(file,'utf-8');
- var HtmlText = HtmlText.replace(/<NODE\sNAME="SUBSECTION"[^>]+?TR="V=4622"\sEVAL="5">[\s\S]+?\n\s\s<\/NODE>/,'');
- var HtmlText = HtmlText.replace(/<NODE\sNAME="SUBSECTION"[^>]+?TR="V=4118"\sEVAL="5">[\s\S]+?\n\s\s<\/NODE>/,'');
- var HtmlText = HtmlText.replace(/<NODE\sNAME="SECTION"[^>]+?TREE_ICON="2"\sEVAL="1">[\s\S]+?\n\s<\/NODE>/,'');
- saveText(HtmlText,'./new_'+file,'utf-8');
- }
复制代码
作者: CrLf 时间: 2015-3-26 14:13
缩进得这么好的应该没问题
3 楼居然还考虑了 utf-8……
作者: 依山居 时间: 2015-11-2 09:12
万年神手党啊。
0几年号处理个文本还需要找人。
作者: 依山居 时间: 2015-11-2 09:27
能否把原文件传一份放上来。
作者: freesoft00 时间: 2015-11-2 09:35
回复 9# 依山居
好的,中午或者下午吧,有事需要外出一下。谢谢关注!
作者: freesoft00 时间: 2015-11-2 16:23
回复 9# 依山居
例子文件我传到了一楼
作者: pcl_test 时间: 2015-11-2 18:39
6楼已改
旧问题要求改来改去也是醉的,特么的文件那么大居然还不发网盘分享链接,那么请问你有按版规发帖否?
作者: DAIC 时间: 2015-11-2 19:22
回复 11# freesoft00
大文件建议上传到网盘,方便下载。
作者: freesoft00 时间: 2015-11-2 20:19
不好意思,没有仔细的看版规大附件上传的规定。不是有意如此。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |