Xml文件,用有效的标记替换数字标记名称

时间:2015-10-20 09:27:55

标签: regex xml replace tags

我有一个无法验证的大型xml文件,因为它包含一些数字标记名称,以下是它的外观:

<?xml version="1.0" encoding="UTF-8" ?>
<root>
<0>
    <id>545f7bf982efa41a496379d2</id>
    <org_id>1</org_id>
    <status>open</status>
    <name>Carrefour</name>
    <address>1175 rue Guillaume Du Vair</address>
    <created>1415543801.5059</created>
</0>
<1>
    <id>545f7bf982efa41a496379d4</id>
    <org_id>1</org_id>
    <status>open</status>
    <name>Carrefour Angers Grand Maine</name>
    <address>rue Du Grand Launay</address>
    <created>1415543801.5146</created>
</1>
<2>
    <id>545f7bf982efa41a496379d6</id>
    <org_id>1</org_id>
    <status>open</status>
    <name>Carrefour Angers Saint Serge</name>
    <address>boulevard Gaston Ramon</address>
    <created>1415543801.523</created>
</2>
<3>
    <id>545f7bf982efa41a496379d8</id>
    <org_id>1</org_id>
    <status>open</status>
    <name>Carrefour Anglet Bab2</name>
    <address>avenue Jean Léon Laporte</address>
    <created>1415543801.5302</created>
</3>
<4>
    <id>545f7bf982efa41a496379da</id>
    <org_id>1</org_id>
    <status>open</status>
    <name>Carrefour Angoulins</name>
    <address>route De Rochefort</address>
    <created>1415543801.5385</created>
</4>
<5>
    <id>545f7bf982efa41a496379dc</id>
    <org_id>1</org_id>
    <status>open</status>
    <name>Carrefour Annecy</name>
    <address>134 avenue De Genève</address>
    <created>1415543801.5458</created>
</5>
.
.
.
</root>

我要做的是自动将每个数字标签替换为有效标签,例如:  替换

Replace <0>...</0> with <A0>...</A0>

我的文件中包含数千个这样的文件,是否可以使用任何工具自动执行此操作。

3 个答案:

答案 0 :(得分:0)

我设法通过在记事本++上使用正则表达式,这并不难,

regex

答案 1 :(得分:0)

支持正则表达式搜索替换功能的任何体面的文本编辑器:

search: <(/?)(\d+)>
replace: <\1A\2>

这应该替换所有标签,无论是打开还是关闭XML。

答案 2 :(得分:0)

我在每个数字标签

之前添加了xyz
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            string input = File.ReadAllText(FILENAME);

            string pattern = @"(?'open_tag'</?)(?'numbers'\d+)>";

            MatchCollection matches = Regex.Matches(input, pattern);
            input = Regex.Replace(input, pattern, "${open_tag}" + "xyz" + "${numbers}" + ">");

        }​