替换Node.js中XML标签的名称

时间:2018-10-04 15:03:50

标签: javascript node.js regex xml

我需要通过nodejs重命名xml文件中的所有标签。我曾考虑过使用正则表达式,使用fs来读取文件,但是我有点迷失了。

<RESULTS>
    <ROW>
        <COLUMN NAME="DATA_CRIACAO"><![CDATA[24/08/18]]></COLUMN>
        <COLUMN NAME="PLACA"><![CDATA[AAA123]]></COLUMN>
        <COLUMN NAME="CHASSI"><![CDATA[YYYYY]]></COLUMN>
    </ROW>
    <ROW>
        <COLUMN NAME="DATA_CRIACAO"><![CDATA[23/08/18]]></COLUMN>
        <COLUMN NAME="PLACA"><![CDATA[BBB123]]></COLUMN>
        <COLUMN NAME="CHASSI"><![CDATA[XXXXX]]></COLUMN>
    </ROW>
</RESULTS>

例如,替换为:

<COLUMN NAME="DATA_CRIACAO"><![CDATA[24/08/18]]></COLUMN>
<COLUMN NAME="PLACA"><![CDATA[AAA123]]></COLUMN>
<COLUMN NAME="CHASSI"><![CDATA[YYYYY]]></COLUMN>

收件人:

<DATA_CRIACA><![CDATA[24/08/18]]></DATA_CRIACA>
<PLACA><![CDATA[AAA123]]></PLACA>
<CHASSI><![CDATA[YYYYY]]></CHASSI>

1 个答案:

答案 0 :(得分:0)

好吧,如果您坚持使用正则表达式,则可以:

/<COLUMN NAME=\"([^\"]*)\"><([^>]*)></COLUMN>/gi

这将与'COLUMN'行的内容相匹配,形成两个捕获组,用于替换。

第一组:引号内的内容。

第二组:CDATA内容。

这将替换为:

<$1><$2><$1>

这将是被“ <>”取代的被俘虏的人群。

使用方法:

var testStr = "<RESULTS>\n"
    + "<ROW>\n"
    + "<COLUMN NAME="DATA_CRIACAO"><![CDATA[24/08/18]]></COLUMN>\n"
    + "<COLUMN NAME="PLACA"><![CDATA[AAA123]]></COLUMN>\n"
    + "<COLUMN NAME="CHASSI"><![CDATA[YYYYY]]></COLUMN>\n"
    + "</ROW>\n"
    + "<ROW>\n"
    + "<COLUMN NAME="DATA_CRIACAO"><![CDATA[23/08/18]]></COLUMN>\n"
    + "<COLUMN NAME="PLACA"><![CDATA[BBB123]]></COLUMN>\n"
    + "<COLUMN NAME="CHASSI"><![CDATA[XXXXX]]></COLUMN>\n"
    + "</ROW>\n"
    + "</RESULTS>\n";

var regex = /<COLUMN NAME=\"([^\"]*)\"><([^>]*)></COLUMN>/gi;

var result = testStr.replace(regex, '<$1><$2></$1>');

现在结果将等于您想要的输出。