2

我有一个包含 xml 页眉和 xml 页脚的 xml 文件,我想删除页眉和页脚并将内容存储在变量中。xml 文件的内容在循环内更改。

例如:

for (some range) do (
set "xmlHeader=<?xml version="1.0" encoding="UTF-8"?><Config  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0">"
set "xmlFooter=</Config>"

<then get and set variable from xml file>
)

xml 文件包含:

<?xml version="1.0" encoding="UTF-8"?><Config  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0">
<tag1>info1 changes in the loop</tag1>
<tag2>info2 changes in the loop</tag2>
</Config>

我希望批量存储一个变量

<tag1>info1</tag1>
<tag2>info2</tag2>

我试过了:

for (outer loop condition ) do (
for /f "Tokens=* Delims=" %%c in (xmlFile.xml) do set config=%%c
"!config:%xmlHeader%=!"
echo "!config!"
)

但是替换没有做任何事情。请帮忙!谢谢你。

4

2 回答 2

3

用sed for Windows试试:

例子:

    >type file
    <?xml version="1.0" encoding="UTF-8"?><Config  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0">
    <tag1>info1 changes in the loop</tag1>
    <tag2>info2 changes in the loop</tag2>
    </Config>

    >sed -r "\#xml version|</Config>#d; s#^(<[^>]+>\S+)[^<]+(<[^>]+>)#\1\2#" file
    <tag1>info1</tag1>
    <tag2>info2</tag2>
于 2013-07-29T21:18:35.867 回答
2

批量字符串替换

%Var:Term=Replace%

这些是您在使用批处理的字符串替换时必须遵循的一些规则

  • 要替换的字符串(搜索词)不能包含以下任何字符
    • 等号=(因为这是它知道搜索词结束的方式)
  • 要替换的字符串(搜索词)不能以下列字符开头
    • 波浪号~(因为这是批处理字符串的特殊字符)
    • 星号*(因为这是批处理字符串的特殊字符)

解决方案

请参阅DBenham 的http://www.dostips.com/forum/viewtopic.php?f=3&t=2710了解 100% 批处理解决方案。

请参阅DBenham 的https://stackoverflow.com/a/16735079/891976 ,了解 Batch/JScript 混合解决方案。

有关我的 100% 批次的概念证明,请参阅https://gist.github.com/DavidRuhmann/4608317

于 2013-07-29T21:24:03.907 回答