使用Shell终端在xml文件中添加新行

时间:2018-10-12 15:43:18

标签: xml shell terminal

我有XML文件的这一部分:

event.target.offsetTop

并且我想使用shell终端在“位置”和“ roomZero”之间插入“ xs:element”(因为更改将在许多文件中完成)。

所以,我希望结果是这样的:

  <xs:complexType name="NioLocationRequest">
    <xs:complexContent>
      <xs:extension base="tns:NioRequestBase">
        <xs:sequence>
          <xs:element name="forceCreation" type="xs:boolean"/>
          <xs:element name="location" type="ns1:Location"/>
          <xs:element minOccurs="0" name="roomZero" type="ns1:Room"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

有人可以回答吗? 预先感谢!

1 个答案:

答案 0 :(得分:1)

使用xsh,您可以写

open file.xml ;
register-namespace xs http://www.w3.org/2001/XMLSchema ;
for //xs:sequence {
    my $elem := insert element xs:element after xs:element[@name="location"] ;
    set $elem/@name "replyTo" ;
    set $elem/@type "xs:string" ;
    insert text {"\n        "} before $elem ;
}
save :b ;

要使其能够处理多个文件,可以添加一个外循环:

for $file in { glob "*.xml" } {
    open $file ;
    ...
}