XML indentation/formatting 在 Xcode

XML indentation/formatting in Xcode

我下载了几个预制配置文件 (xml) 但是当我使用 Xcode 编辑它们时,每个键、字符串、整数、元素等的缩进格式出现了在一行中。我说的是整个文件。示例:

<dict><key>OfficeAutoSignIn</key><true/><key>ShowWhatsNewOnLaunch</key><false/><key>DefaultsToLocalOpenSave</key><true/></dict></dict></array></dict></dict></dict><dict><key>PayloadUUID</key><string>1A314508-09FV-40C6-80F4-B98AAQWEC8D</string><key>PayloadType</key><string>com.apple.ManagedClient.preferences</string><key>PayloadOrganization</key><string>XYZ</string><key>PayloadIdentifier</key><string>CD2345508-40F3-40C6-80F4-TY7WSDDAC8D</string><key>PayloadDisplayName</key><string>Custom</string><key>PayloadDescription</key><string/><key>PayloadVersion</key><integer>1</integer><key>PayloadEnabled</key><true/><key>PayloadContent</key><dict><key>com.microsoft.Office365ServiceV2</key><dict><key>Forced</key><array><dict><key>mcx_preference_settings</key><dict><key>SendAllTelemetryEnabled</key><true/></dict></dict></array></dict></dict></dict><dict><key>PayloadUUID</key><string>NMJK78543-42EE-41F7-97D7-765CC1832E08</string><key>PayloadType</key><string>com.apple.ManagedClien....etc...etc..

当然,我可以将鼠标光标放在每个元素的末尾,然后按 return 和 Xcode 将自动以正确的方式修复缩进,但这将花费我永远为每个文件执行此操作。

我想知道,在 Xcode 中,通过执行 Select 全部(select xml 文件的整个代码),有任何选项可以神奇地以正确的缩进格式和所有正确的制表符空格放置整个代码?

xmllint --format input.xml > formatted.xml

Xcode 没有 XML 的 prettify/format 命令,但有几个选项:

  1. 可以通过命令行格式化:

    xmllint --format -o output.xml input.xml
    
  2. 来自 Xcode,您还可以选择将 XML 查看为 plist:

    这将产生:

    然后手动保存(例如命令+s或“文件”»“保存”)。如果您切换回查看“源代码”,您将看到:

    与先前的技术一样,这增加了文件的一点点杂乱无章(<?xml>,在这种情况下,<!DOCTYPE><plist></plist> 标签, too),您可能必须删除它,但这也许比您自己手动添加所有换行符更容易。

  3. 另一种方法是在每个新标签前插入换行符,然后重新缩进。因此,使用 Xcode 查找和替换、“查找”»“查找和替换...”或 选项+命令 +f,搜索 < 并替换为 ⏎<.

    注意,要在Xcode“With”框中输入换行符,按control+option+命令+p。当您完成输入 < 的“替换”字段和 ⏎< 的“替换”字段后,您可以点击“全部”按钮进行所有替换。

    显然,既然你已经把所有的东西都放在了自己的行上,你可以用 command+a 格式化它(到 select all) 然后是 control+i (重新缩进)。

  4. 如果您可以访问其他编辑器,请查看是否可以在那里重新格式化您的代码。例如。 DreamWeaver 的“编辑”»“代码”»“应用源格式”可靠地很好地格式化了代码,没有添加任何多余的东西。对于这样一个简单的任务来说有点过分了,但它做得很好。