c# - 如何使用 C# 修改 .plist 文件?

标签 c# ios

如何将第14行更改为更改后的值,然后将其另存为.plist文件!我正在尝试使用 XmlElement 然后保存它,但问题是在我保存该文件后,doctype 行将是,我的意思是“[]”已添加到 doctype 行的末尾,这在 iPhone 使用时会导致问题这个文件,在c#中,如何正确编辑它?

app.plist

我使用下面的代码来修改.plist文件:

XmlDocument doc = new XmlDocument();
        string plistPath = "app.plist";
        doc.Load(plistPath);
     foreach (var node in doc.SelectNodes("//string"))
        {
            if (node is XmlElement)
            {
                var elem = (XmlElement)node;
                if (elem.InnerText == "software-package")
                {
                    var versionElement = elem.NextSibling.NextSibling as XmlElement;
                    if (versionElement != null)
                    {
                        versionElement.InnerText = "PCDownload Url";
                    }
                }
            }
        }
        doc.Save(plistPath);

并且 .plist 文件中的 DOCTYPE 行将更改为:< !DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN""http://www.apple.com/DTDs/PropertyList-1.0.dtd "[]> 。

最佳答案

我认为您的问题与 XmlDocument.Save() 方法有关。正如您所知,XML 和 plist 文件略有不同,但 Save() 方法在保存时尝试将 XML 属性应用于您的 plist。

这里有一些选项:

1) 使用正则表达式。将文件内容缓冲到 byte[] 中,使用正则表达式进行更改,然后将该缓冲区写入 .plist。

2) 使用 XML 解析器解析文档,但不要使用内置的 Save() 方法。这仍然可能会导致 plist 文件发生不必要的修改,但值得一试。

关于c# - 如何使用 C# 修改 .plist 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18615749/

相关文章:

ios - 如何使用 getData() 在 Swift 中使用 ObjC PNChart 库绘制折线图?

c# - 在 C# 中将 unicode 字符串写入 csv

ios - CoreLocation 在 Today Extension 中不起作用

ios - 自定义多个标签或按钮

c# - 在程序集中搜索所有子类型?

iOS:在旋转期间保持 View 居中在屏幕上

iphone - UITableView 刷新导航 Controller 中的数据

c# - 在 C# 中一般创建对象

c# - 在不将整个表加载到内存的情况下检查哪些消息已经存在

c# - 使用 MySql、EF 和 CF 的慢速查询