民间,
尝试使用'sed'更新XML文件值。 bat命令无法识别。
CODE:
**@echo off
SET PREFIX=ROOM107-
SET SUFFIX=\Admin
SET /P PCNAME1=Please enter your desired NUMBER:
SET PCNAME=%PREFIX%%PCNAME1%%SUFFIX%
sed -i "s#<UserId>Admin</UserId>#<UserId>%PCNAME%</UserId>#" changexml.xml
pause**
使用BAT命令更新以下XML文件的其他任何方法?
XML:
<xml>
<Main_group>
<group_1>
<add key="A" value="AMERICA"/>
<add key="B" value="BALL"/>
</group_1>
<group_2>
<add key="A" value="AMERICA"/>
<add key="B" value="BALL"/>
</group_2>
</Main_group>
<SubGroup>
<add key="A" value="AMERICA"/>
<add key="B" value="BALL"/>
</SubGroup>
</xml>
尝试更新节点的“A”和“B”的值 如下所示
<SubGroup>
<add key="A" value="USA"/>
<add key="B" value="Basket Ball"/>
</SubGroup>
答案 0 :(得分:1)
你的xml无效,所以我编辑了一下(保存为xml.txt):
<xml>
<Main_group>
<group_1>
<add key="A" value="AMERICA"/>
<add key="B" value="BALL"/>
</group_1>
<group_2>
<add key="A" value="AMERICA"/>
<add key="B" value="BALL"/>
</group_2>
</Main_group>
<SubGroup>
<add key="A" value="AMERICA"/>
<add key="B" value="BALL"/>
</SubGroup>
</xml>
这是一个编辑他的值的bat文件(应该在同一个目录中)。 没有 需要安装外部程序,xml被解析为xml而不使用正则表达式。您可以更改硬编码值:
@if (@X)==(@Y) @end /* JScript comment
@echo off
cscript //E:JScript //nologo "%~f0"
exit /b %errorlevel%
@if (@X)==(@Y) @end JScript comment */
//------------------------
// -- hard coded values --
var originalFile="xml.txt";
var newFile="xml1.xml";
var xpath1='//SubGroup/add[@key="A"]/@value';
var xpath2='//SubGroup/add[@key="B"]/@value';
var newValue1="USA";
var newValue2="Basket Ball";
//---------------------------
var objDoc;
var objNodes;
var loaded;
try {
objDoc = WScript.CreateObject("MSXML.DOMDocument");
loaded=objDoc.load(originalFile);
} catch (err){
WScript.Echo("Error while parsing the xml");
WScript.Echo(err.message);
WScript.Quit(1);
}
if(!loaded){
WScript.Echo("Error while parsing the xml");
WScript.Echo("");
WScript.Echo("Error Code:"+objDoc.parseError.errorCode);
WScript.Echo("");
WScript.Echo("Line:"+objDoc.parseError.line+" Posotion:"+objDoc.parseError.filepos);
WScript.Echo("");
WScript.Echo("Reason:"+objDoc.parseError.reason);
WScript.Echo("");
WScript.Echo("URL:"+objDoc.parseError.url);
WScript.Echo("");
WScript.Echo(objDoc.parseError.srcText);
WScript.Quit(5);
}
var node1=objDoc.selectSingleNode(xpath1);
var node2=objDoc.selectSingleNode(xpath2);
node1.text=newValue1;
node2.text=newValue2;
objDoc.save(newFile);
答案 1 :(得分:1)
您可能希望使用xmlstarlet来处理XML文档。
以下是安装它的链接: http://xmlstar.sourceforge.net/download.php
使用它之后,这里是处理所需更改的代码:
xmlstarlet ed [--inplace] -u '/xml/SubGroup/add[@key="A"]/@value' -v "USA" -u '/xml/SubGroup/add[@key="B"]/@value' -v "Basket Ball" changexml.xml
参数--inplace将更改原始文件。
答案 2 :(得分:0)
如果要在Windows上使用for (i in 1:length(colnames(df))) {
colnames(df)[i] = toupper(colnames(df)[i])
# return() ... you don't need this
}
,则必须使用MSYS,Cygwin或Windows Subsystem for Linux等Unix环境。
然而, parse XML with RegEx 并不是一个好主意。