标题: [文本处理] 怎么获取一个XML文件中指定行的内容?然后过滤该行不需要的字符 [打印本页]
作者: tangtianhao 时间: 2011-9-8 18:49 标题: 怎么获取一个XML文件中指定行的内容?然后过滤该行不需要的字符
有一个XML文件内容如下:
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>每日一句</title>
<link>http://dict.hjenglish.com/daily</link>
<description>每日一句,积少成多,让你的英语口语跳出来</description>
<pubDate>Thu, 08 Sep 2011 02:48:59 GMT</pubDate>
<lastBuildDate>Thu, 08 Sep 2011 02:48:59 GMT</lastBuildDate>
<generator>Rss Generator By dict.hjenglish.com</generator>
<item>
<title>It feels like spring.</title>
<link>http://bulo.yeshj.com/menu/1497/item/459695/</link>
<pubDate>2011-09-08</pubDate>
<description>It feels like spring./感觉好像春天到了。 </description>
<enclosure>http://d1.g.hjfile.cn/voice/daily_en/dy_1395.mp3</enclosure>
<en_sentence>It feels like spring.</en_sentence>
<cn_sentence>感觉好像春天到了。 </cn_sentence>
<flashsound>http://dict.hjenglish.com/speaker_sent.swf?w=dy_1395</flashsound>
</item>
</channel>
</rss>
该XML是沪江英语的每日一句的文件,假设每天的每日一句都是记录在指定行的,不会变化。我需要获取 <description>It feels like spring./感觉好像春天到了。 </description>这一行的内容
。然后过滤掉前后的<description></description>,最好It feels like spring./感觉好像春天到了。中间的/也去掉,换成空格
我折腾好几天了,都达不到自己要的效果,烦劳帮忙。
作者: Batcher 时间: 2011-9-8 19:19
根据你的总结,“指定行”有什么特征?一定是14行吗
作者: cjiabing 时间: 2011-9-8 19:45
- @echo off
- For /f "tokens=1,2 delims=><" %%a in ("<en_sentence>It feels like spring.</en_sentence>") do (
- if /i %%a==en_sentence echo 英语: %%b
- if /i %%a==cn_sentence echo 汉语: %%b
- )
- pause
复制代码
把
"<en_sentence>It feels like spring.</en_sentence>"
换成路径就可以了。如果路径有空格,还得用usebackq。
作者: hankerer 时间: 2011-9-8 19:58
回复 1# tangtianhao
新手随便贴个,发现<enclosure>只出现了一次,就从它下手。- @echo off
- setlocal EnableDelayedExpansion
-
- for /f "delims=:" %%i in ('findstr /n "<enclosure>" test.xml') do set aa=%%i
-
- set /a aa-=1
- set bb=1
-
- for /f "delims=" %%i in (test.xml) do (
- if !bb! == %aa% set cc=%%i
- set /a bb+=1
- )
-
- set cc="%cc:*<description>=%"
- set cc="%cc:</description>=%"
- set cc=%cc:~2,-2%
- set cc=%cc:/= %
- echo %cc%
- pause
复制代码
作者: ArdentMan 时间: 2011-9-8 21:03
本帖最后由 ArdentMan 于 2011-9-8 21:05 编辑
- @Echo Off
- For /F "tokens=2,3 delims=<>/" %%a In ('Findstr "<description>" test.xml') Do Echo %%a %%b
- Pause>Nul
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |