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

Windows の sed で試してみてください:

例:

    >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%

これらは、バッチの文字列置換を使用する際に従う必要があるいくつかのルールです。

  • 置換する文字列 (検索語) には、次の文字を含めることはできません
    • 等号=(これは、検索語の終わりを認識する方法であるため)
  • 置換する文字列 (検索語) は、次の文字で始まることはできません
    • チルダ~(これはバッチ文字列の特殊文字であるため)
    • アスタリスク*(これはバッチ文字列の特殊文字であるため)

ソリューション

100% のバッチ ソリューションについては、DBenham によるhttp://www.dostips.com/forum/viewtopic.php?f=3&t=2710を参照してください。

バッチ/JScript ハイブリッド ソリューションについては、DBenham によるhttps://stackoverflow.com/a/16735079/891976を参照してください。

私の 100% バッチの概念実証については、https://gist.github.com/DavidRuhmann/4608317を参照してください。

于 2013-07-29T21:24:03.907 に答える