我正在将交换机配置从一个供应商转换为另一个供应商,并且某些值(配置属性)希望转换为新值(再次为固定值)。 基本上将预定义的字符串列表与相应的字符串交换。
我有一些使用XSLT将XML转换为XML的经验,但是不幸的是,输入文件是文本,我不知道实现这一目标的最佳方法是什么。
我应该集中精力使用XSLT还是应该尝试使用python进行解析?
文本文件中的每个选项卡均以特定的字符串(界面)开头,以特定的字符串(出口)结尾。 在两者之间有一定数量的字符串值,我可以定义可用于转换的1to1字符串转换。
以下是输入文本文件的示例:
interface A1<br>
speed-duplex auto-10-100<br>
no power-over-ethernet<br>
ipv6 access-group "AG_IN" in<br>
service-policy "SP_IN" in<br>
tagged vlan 10<br>
untagged vlan 1<br>
exit<br>
interface A2<br>
speed-duplex auto-10-100<br>
no power-over-ethernet<br>
ipv6 access-group "AG_IN" in<br>
service-policy "SP_IN" in<br>
tagged vlan 10<br>
untagged vlan 1<br>
exit<br>
interface A3<br>
name "AP1"<br>
ipv6 access-group "AG_IN" in<br>
service-policy "SP_IN" in<br>
tagged vlan 5<br>
untagged vlan 1<br>
exit<br>
*<br>
*<br>
*<br>
interface A24<br>
speed-duplex auto-10-100<br>
no power-over-ethernet<br>
ipv6 access-group "AG_IN" in<br>
service-policy "SP_IN" in<br>
tagged vlan 10<br>
untagged vlan 1<br>
exit <br>
interface B1<br>
speed-duplex auto-10-100<br>
no power-over-ethernet<br>
ipv6 access-group "AG_IN" in<br>
service-policy "SP_IN" in<br>
tagged vlan 10<br>
untagged vlan 1<br>
exit<br>
*<br>
*<br>
* <br>
interface B24<br>
speed-duplex auto-10-100<br>
no power-over-ethernet<br>
ipv6 access-group "AG_IN" in<br>
service-policy "SP_IN" in<br>
tagged vlan 10<br>
untagged vlan 1<br>
exit<br>
输出应如下所示:
interface GigabitEthernet1/0/1<br>
speed auto 100 10<br>
no poe enable<br>
port hybrid vlan 10 tagged<br>
port hybrid vlan 1 untagged<br>
quit<br>
interface GigabitEthernet1/0/2<br>
speed auto 100 10<br>
no poe enable<br>
port hybrid vlan 10 tagged<br>
port hybrid vlan 1 untagged <br>
quit<br>
interface GigabitEthernet1/0/3<br>
description AP1<br>
port hybrid vlan 10 tagged<br>
port hybrid vlan 1 untagged<br>
quit<br>
interface GigabitEthernet1/0/25<br>
speed auto 100 10<br>
no poe enable<br>
port hybrid vlan 10 tagged<br>
port hybrid vlan 1 untagged<br>
quit<br>
interface GigabitEthernet1/0/26<br>
speed auto 100 10<br>
no poe enable<br>
port hybrid vlan 10 tagged<br>
port hybrid vlan 1 untagged<br>
quit<br>
所以替换:
"interface A1" with "interface GigabitEthernet1/0/1"
"no power-over-ethernet" with "no poe enable"
"tagged vlan 10" with "port hybrid vlan 10 tagged"
唯一的可变字符串是名称“ AP1”之后的字符串,必须将其翻译成描述AP1。