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

[文本处理] 【已解决】求助:批处理解析xml文件修改指定节点/元素/标签里的文本内容

本帖最后由 pcl_test 于 2017-4-30 08:12 编辑

有一段xml文本,要求对属性name=Theme.Holo.Wallpaper之下的<item name="windowShowWallpaper">false</item>
这一句中的false替换为true,其他的不变,怎么破?不用sed等第三方工具前提下,因为要让别人使用

<style name="Theme.Holo.Wallpaper" parent="@style/Theme.Holo">
        <item name="progressBarStyleLargeInverse">
        <item name="textColorPrimaryInverseDisableOnly">
        <item name="windowShowWallpaper">false</item>
               
<style name="Theme.Wallpaper" parent="@style/Theme">
        <item name="windowShowWallpaper">flase</item>
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in (a.xml) do (
  3.    set "str=%%i"
  4.    if "!str:"Theme.Holo.Wallpaper"=!" neq "!str!" set flag=1
  5.    if defined flag (
  6.       if "!str:"windowShowWallpaper"=!" neq "!str!" (
  7.          set "str=!str:false=True!"
  8.          set "flag="
  9.       )
  10.    )
  11.    echo,!str!
  12. )
  13. pause
复制代码
1

评分人数

    • sxw: 乐于住人技术 + 1

TOP

这个算是比较经典,比较常见的吧,虽然我是新手不懂。
不过有看过网页文件提取的。这个就记录下帖子查阅。
谢谢sxw,谢谢apang。

TOP

这样试试:
  1. Set xmldom=CreateObject("microsoft.xmldom")
  2. xmldom.load("a.xml")
  3. Set root=xmldom.documentElement
  4. Set colItem=root.getElementsByTagName("item")
  5. For Each item In colItem
  6.     If item.getAttribute("name")="windowShowWallpaper" Then
  7.         item.childnodes(0).nodevalue="true"
  8.     End If
  9. Next
  10. xmldom.save("a.xml")
复制代码
1

评分人数

    • sxw: 乐于助人技术 + 1

TOP

回复 2# apang


    完美运行,这类问题算是有套解决方案了,谢了!

TOP

回复 4# wankoilz


    嗯这是vbs嘛?

TOP

回复 3# lky216


      收藏,特别是牵涉到上下行的问题

TOP

有一段xml文本,要求对属性name=Theme.Holo.Wallpaper之下的false
这一句中的false替换为true,其他的不变 ...
sxw 发表于 2013-5-4 17:01



     可以是可以,但是都变成true了。我只要Theme.Holo.Wallpaper这个属性下的变成true就行了,依然感谢。。方法也行的通,少许修改?

TOP

哦,没注意是Theme.Holo.Wallpaper下面...

TOP

很精美。。。

TOP

回复 4# wankoilz


    楼主也有学这个吧http://www.w3school.com.cn/xmldom/

TOP

回复 8# sxw


    小改一下应该就行了:
  1. Set xmldom=CreateObject("microsoft.xmldom")
  2. xmldom.load("a.xml")
  3. Set root=xmldom.documentElement
  4. Set eleStyle=root.getElementsByName("Theme.Holo.Wallpaper")
  5. Set colItem=eleStyle.getElementsByTagName("item")
  6. For Each item In colItem
  7.     If item.getAttribute("name")="windowShowWallpaper" Then
  8.         item.childnodes(0).nodevalue="true"
  9.     End If
  10. Next
  11. xmldom.save("b.xml")
复制代码

TOP

回复 12# CrLf


    或这样:
  1. Set xmldom=CreateObject("microsoft.xmldom")
  2. xmldom.load("a.xml")
  3. Set root=xmldom.documentElement
  4. Set colItem=root.getElementsByTagName("item")
  5. For Each item In colItem
  6.     If item.getAttribute("name")="windowShowWallpaper" And item.parentNode.getAttribute("name")="Theme.Holo.Wallpaper" Then
  7.         item.childnodes(0).nodevalue="true"
  8.     End If
  9. Next
  10. xmldom.save("a.xml")
复制代码
1

评分人数

    • sxw: 可以。。技术 + 1

TOP

回复 11# lky216


    没学完。。。我是用到再看的那种

TOP

回复 12# CrLf

在cmd运行不了,要安装什么插件吗?

TOP

返回列表