[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 怎么获取一个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./感觉好像春天到了。中间的/也去掉,换成空格


我折腾好几天了,都达不到自己要的效果,烦劳帮忙。

本帖最后由 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
复制代码
一路飘过的鸟~~~

TOP

回复 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
复制代码

TOP

  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。
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

根据你的总结,“指定行”有什么特征?一定是14行吗
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表