【问题标题】:Regex (or no?) : encode all < > & in XML file and preserve XML markup正则表达式(或否?):对 XML 文件中的所有 < > & 进行编码并保留 XML 标记
【发布时间】:2015-02-22 16:46:02
【问题描述】:

我正在模仿一个大型 xml 文件,我愿意将其导入 mediawiki。 文件已完成,但&lt;text&gt;content&lt;/text&gt; 中的内容仍有剩余&lt;&gt; 我必须先编码。

我希望可以使用正则表达式完成编码步骤(我使用的是 Windows 和软件,如 sublime text 或编辑板或 vim)。我也应该能够运行 php 脚本。

使用({{word)(.*?)(?=&lt;/text&gt;)我能够选择所有目标进行替换——因为我不想对 xml 标记本身进行编码——但我不知道如何完成这项艰巨的工作,即如何替换所有 位于目标明确的文本。

为了更清楚,这里简要摘录了我需要编码几个字符的内容(我在 30 个月的文件中还有 50000 个类似的内容):

      <page>
    <title>Title:75002</title>
    <ns>510</ns>
    <id>21</id>
    <revision>
      <id></id>
      <parentid></parentid>
      <timestamp>2015-1-5T14:49:09Z</timestamp>
      <contributor>
        <ip>0:0:0:0:0:0:0:1</ip>
      </contributor>
      <text xmlspace="preserve" bytes="345">{{word

| vedette             ={{{vedette}}}
| id            ={{ROOTPAGENAME}}

| vedette           =boutique, with forbidden > and 
 evil < multiline

<!-----------encyclo---------->

| étymologie        = still have sometimes a messing > 
and maybe a < more.

<!-----------relations-------->

| synonyme          ={{AutoLienSyno | }}

}}</text>
      <sha1></sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>

谢谢。

【问题讨论】:

  • “模仿一个大的 xml 文件” -- 你什么?与其试图在事后修复混乱,只需从一开始就使用适当的工具构建您的 XML 文件,一切都会自动到位。
  • 不要不要尝试使用正则表达式来操作 XML 或 HTML。请参阅Can you provide some examples of why it is hard t o parse XML and HTML with a regex? 了解一长串原因。让您自己的生活更轻松,并使用一个可以自动为您处理编码的工具正确构建 XML。

标签: regex xml encode entities wikimedia-dumps


【解决方案1】:

对我来说,在重复选择的文本中进行多次替换的简单方法是使用 sed。

用 : 编写一个 command.txt 文件

 /<text/,/<\/text>/{
   /<text/b
   /<\/text>/b
   s/\&/\&amp;/g
   s/>/\&gt;/g
   s/</\&lt;/g
 }

然后运行sed -f command.txt input.xml &gt; output.xml

这样,所有&lt; &gt; &amp; 都将被编码,仅在由&lt;text&lt;/text&gt; 分隔的目标文本部分中(这些边界保持不变)。

这里的文档:http://sed.sourceforge.net/sedfaq4.html#s4.24

【讨论】:

    猜你喜欢
    • 2015-02-08
    • 1970-01-01
    • 2013-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-20
    • 2011-11-21
    • 2018-08-04
    相关资源
    最近更新 更多