的NSXMLParser,如何知道写什么编码和版本的标签(如果存在)

的NSXMLParser,如何知道写什么编码和版本的<?xml>标签(如果存在)

问题描述:

正如标题所说,当我解析使用的NSXMLParser解析器了一个文件,有没有办法知道,如果该标签存在?如果是的话,我如何获得它的属性值(如果存在的话)?的NSXMLParser,如何知道写什么编码和版本的<?xml>标签(如果存在)

我试过NSXMLParserDelegate的所有方法,但它们都没有解决我的问题...... 我应该手工解析这个标签?

+0

你可以参考这样回答http://*.com/questions/6774600/ipad-xml-parsing-with-attributes-deal解析我不想解析每个元素的属性的属性 – 2013-03-18 09:42:52

+0

,我想分析这些标签,通常是XML文件的第一个标签的......我看到这个标签没有被报道的NSXMLParser的(不论是标签还是其属性) – Massimo 2013-03-18 10:14:36

+2

编码应该是无关的。 NSXMLParser读取它并将所有XML数据相应地转换为NSString。对于其他标签,如版本,你可能运气不好。如果您确实需要这些信息,则可能需要使用较低级别的XML库。 – 2013-03-18 10:22:44

从理论上讲,你应该得到-foundProcessingInstructionWithTarget:data:委托回调,但在实践中不发生(至少在iOS上,我没有检查OS X)。

如果你想明确检查,你将需要解析该文件自己的开始,寻找XML指令。短阅读并NSScanner扫描可能就足够了对于(通过使用NSScanner,而不是一个简单的字符串的测试,你会得到更好的空白处理)。

显然,这不是你最初寻找的答案,但是由于XML将会有一个声明的字符集,无论如何,你可能只想写出一个utf-8声明,并假定任何读你修改的文件(因为你并不需要重写,如果是相同的),也可以读取处理指令以及处理字符设置正确。