Board logo

标题: [文本处理] 怎么获取一个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

  1. @echo off
  2. For /f "tokens=1,2 delims=><" %%a in ("<en_sentence>It feels like spring.</en_sentence>") do (
  3. if /i %%a==en_sentence  echo 英语: %%b
  4. if /i %%a==cn_sentence  echo 汉语: %%b
  5. )
  6. pause
复制代码

"<en_sentence>It feels like spring.</en_sentence>"
换成路径就可以了。如果路径有空格,还得用usebackq。
作者: hankerer    时间: 2011-9-8 19:58

回复 1# tangtianhao


    新手随便贴个,发现<enclosure>只出现了一次,就从它下手。
  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. for /f "delims=:" %%i in ('findstr /n "<enclosure>" test.xml') do set aa=%%i
  4. set /a aa-=1
  5. set bb=1
  6. for /f "delims=" %%i in (test.xml) do (
  7. if !bb! == %aa% set cc=%%i
  8. set /a bb+=1
  9. )
  10. set cc="%cc:*<description>=%"
  11. set cc="%cc:</description>=%"
  12. set cc=%cc:~2,-2%
  13. set cc=%cc:/= %
  14. echo %cc%
  15. pause
复制代码

作者: ArdentMan    时间: 2011-9-8 21:03

本帖最后由 ArdentMan 于 2011-9-8 21:05 编辑
  1. @Echo Off
  2. For /F "tokens=2,3 delims=<>/" %%a In ('Findstr "<description>" test.xml') Do Echo %%a %%b
  3. Pause>Nul
复制代码





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