使用程序而不是Perl进行文本处理

时间:2009-09-10 20:31:37

标签: xml plist text-processing

我有一个.plist文件,如下所示:

<plist version="1.0">
<array>
<dict>
    <key>name</key>
    <string>Alabama</string>
    <key>abreviation</key>
    <string>AL</string>
    <key>date</key>
    <string>1819</string>
    <key>population</key>
    <string>4,627,851</string>
    <key>capital</key>
    <string>Montgomery</string>
    <key>largestCity</key>
    <string>Birmingham</string>
</dict>
....
</array>
</plist>

我想向plist添加更多信息,例如座右铭和昵称。它们采用以下格式:

<nickname>Yellowhammer State</nickname>
<nickname>The Last Frontier</nickname>
<nickname>The Grand Canyon State</nickname>
<nickname>The Natural State</nickname>
<nickname>The Golden State</nickname>
<nickname>The Centennial State</nickname>
<nickname>The Constitution State</nickname>
<nickname>The First State</nickname>
<nickname>The Sunshine State</nickname>

我正在考虑进行一些搜索和替换以添加更多信息。我还可以编写一个perl脚本来读取昵称并将它们添加到plist中。

但是,是否有一个文本处理程序允许我迭代值并将它们插入正确的位置?我一直在搜索文本处理器/编辑器,但找不到我要找的东西。

2 个答案:

答案 0 :(得分:1)

这看起来像是XSLT的工作:Mac或Linux上的xsltproc。 (或支持XSLT 2.0的SAXON)

[你没有提到第二个文件中的昵称是如何匹配的 到第一个文件中的值:它们是否匹配顺序? ]

答案 1 :(得分:0)

首先,我建议创建plist 1.1,它将您的名称值对视为相关实体,例如:

<key name="capital" value="Montgomery" />

<key>capital <value>Montgomery</value></key>

在我看来,让它们与你的方式分开会使你想要做的任何未来的处理变得更加困难。

除非您希望提示每次插入,否则您需要在昵称附近添加更多元信息才能使关联处于正确状态。制作昵称

<nickname state="AL">Yellowhammer State</nickname>

将为您提供所需的一切,以便在任何语言的适当位置轻松插入数据。