标题: [文本处理] 【已解决】求助:批处理解析xml文件修改指定节点/元素/标签里的文本内容 [打印本页]
作者: sxw 时间: 2013-5-4 17:01 标题: 【已解决】求助:批处理解析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>
作者: apang 时间: 2013-5-4 18:48
- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%i in (a.xml) do (
- set "str=%%i"
- if "!str:"Theme.Holo.Wallpaper"=!" neq "!str!" set flag=1
- if defined flag (
- if "!str:"windowShowWallpaper"=!" neq "!str!" (
- set "str=!str:false=True!"
- set "flag="
- )
- )
- echo,!str!
- )
- pause
复制代码
作者: lky216 时间: 2013-5-4 18:50
这个算是比较经典,比较常见的吧,虽然我是新手不懂。
不过有看过网页文件提取的。这个就记录下帖子查阅。
谢谢sxw,谢谢apang。
作者: wankoilz 时间: 2013-5-4 19:05
这样试试:- Set xmldom=CreateObject("microsoft.xmldom")
- xmldom.load("a.xml")
- Set root=xmldom.documentElement
- Set colItem=root.getElementsByTagName("item")
- For Each item In colItem
- If item.getAttribute("name")="windowShowWallpaper" Then
- item.childnodes(0).nodevalue="true"
- End If
- Next
- xmldom.save("a.xml")
复制代码
作者: sxw 时间: 2013-5-4 19:08
回复 2# apang
完美运行,这类问题算是有套解决方案了,谢了!
作者: sxw 时间: 2013-5-4 19:10
回复 4# wankoilz
嗯这是vbs嘛?
作者: sxw 时间: 2013-5-4 19:10
回复 3# lky216
收藏,特别是牵涉到上下行的问题
作者: sxw 时间: 2013-5-4 19:17
有一段xml文本,要求对属性name=Theme.Holo.Wallpaper之下的false
这一句中的false替换为true,其他的不变 ...
sxw 发表于 2013-5-4 17:01
可以是可以,但是都变成true了。我只要Theme.Holo.Wallpaper这个属性下的变成true就行了,依然感谢。。方法也行的通,少许修改?
作者: wankoilz 时间: 2013-5-4 20:14
哦,没注意是Theme.Holo.Wallpaper下面...
作者: wuhengsi 时间: 2013-5-4 21:01
很精美。。。
作者: lky216 时间: 2013-5-4 21:49
回复 4# wankoilz
楼主也有学这个吧http://www.w3school.com.cn/xmldom/
作者: CrLf 时间: 2013-5-5 04:45
回复 8# sxw
小改一下应该就行了:- Set xmldom=CreateObject("microsoft.xmldom")
- xmldom.load("a.xml")
- Set root=xmldom.documentElement
- Set eleStyle=root.getElementsByName("Theme.Holo.Wallpaper")
- Set colItem=eleStyle.getElementsByTagName("item")
- For Each item In colItem
- If item.getAttribute("name")="windowShowWallpaper" Then
- item.childnodes(0).nodevalue="true"
- End If
- Next
- xmldom.save("b.xml")
复制代码
作者: CrLf 时间: 2013-5-5 04:50
回复 12# CrLf
或这样:- Set xmldom=CreateObject("microsoft.xmldom")
- xmldom.load("a.xml")
- Set root=xmldom.documentElement
- Set colItem=root.getElementsByTagName("item")
- For Each item In colItem
- If item.getAttribute("name")="windowShowWallpaper" And item.parentNode.getAttribute("name")="Theme.Holo.Wallpaper" Then
- item.childnodes(0).nodevalue="true"
- End If
- Next
- xmldom.save("a.xml")
复制代码
作者: sxw 时间: 2013-5-5 07:09
回复 11# lky216
没学完。。。我是用到再看的那种
作者: lky216 时间: 2013-12-12 16:33
回复 12# CrLf
在cmd运行不了,要安装什么插件吗?
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |