2012-01-07 3 views
1

У меня есть некоторые файлы XML, и мне нужно их автоматически редактировать.Редактирование файлов XML

Например

<Content> 
<Texts> 
<Text id="1"> 
<en value="blaabla" /> 
</Text> 
<Text id="2"> 
<en value="blablablablal" /> 
</Text> 
</Texts> 
</Content> 

Мне нужно скопировать «ан значение» линий и добавить эти строки в их рамках линии, но с одним изменением.

Итак, когда обработка сделано, результат должен быть, что:

<Content> 
<Texts> 
<Text id="1"> 
<en value="blablabla" /> 
<fr value="blablabla" /> 
</Text> 
<Text id="2"> 
<en value="blablablablal" /> 
<fr value="blablablablal" /> 
</Text> 
</Texts> 
</Content> 
+0

Это может быть осуществлено с использованием C# .NET и многих других языков сценариев. Что вы хотели бы сделать? Делает это намного проще, если мы можем знать, что вы хотите использовать, поэтому мы можем адаптировать ответ для вас. –

ответ

2

Вы могли бы использовать этот XSLT для преобразования файлов XML:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
       version="1.0">  
    <xsl:output indent="yes"/> 

     <xsl:template match="@*|node()"> 
     <xsl:copy> 
      <xsl:apply-templates select="@*|node()"/> 
     </xsl:copy> 
     </xsl:template> 

    <xsl:template match="en[@value]"> 
     <xsl:copy> 
     <xsl:apply-templates select="@*|node()" /> 
     </xsl:copy> 
     <fr value="{@value}"/> 
    </xsl:template> 

</xsl:stylesheet> 
1
$ sed '/<en /p' data.txt | awk '/<en /{if(x++%2)sub(/<en /, "<fr ")}1' 
<Content> 
<Texts> 
<Text id="1"> 
<en value="blaabla" /> 
<fr value="blaabla" /> 
</Text> 
<Text id="2"> 
<en value="blablablablal" /> 
<fr value="blablablablal" /> 
  • используя sed дублировать строку, которая содержит <en
  • с помощью awk изменить нечетные <en к <fr

ПРЕДУПРЕЖДЕНИЕ:<en ... /> должна быть одной линией.

Смежные вопросы