【问题标题】:Parsing multiple XML web file iphone解析多个 XML Web 文件 iphone
【发布时间】:2012-07-08 22:46:13
【问题描述】:

假设我有一个带有标签的 xml 文件,其中包含我想在我的 tableView 中显示的字段数,在另一个 xml 文件中我有要在该 tableView 中显示的信息。

问题是:我应该在我的项目中创建 2 个不同的文件(xmlparse1.h 和 .m + xmlparse2.h 和 .m)还是应该将所有代码放入 1(xmlparse.h + .m)和在代码中用 bool 或类似的东西区分我现在正在解析哪个文件?

如果这可能会改变,我正在 Xcode 4.3 mac os x 10.7.4 上开发一个 iphone 应用程序

编辑:第一个文件:

<MenuPrin>
<humidite>82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</humidite>
<tempmoy>
189,124,700,700,700,700,700,700,700,700,700,700,700,700,700,700,700,700,700,700
</tempmoy>
</MenuPrin>

第二个文件:

<Instal>
<nbrField>2</nbrField>
</Instal>

所以它看起来像这样。因此,由于 nbrField 为 2,我将从 tempMoy 和 humanite 中获取第 2 个值并将它们显示在 tableView 中。

编辑结束

【问题讨论】:

  • 您打算针对哪个最低版本的 iOS?
  • 您能否发布您的 XML 示例以使其更清晰?
  • 使用 xml 文件示例更新问题
  • 您是否可以控制 XML 文件的生成,或者这只是您从其他服务器获得的东西?
  • 我无法控制它,我从控制器(板)获取此 XML

标签: iphone objective-c xml-parsing


【解决方案1】:

如果您在两种情况下的解析方式相似,那么添加两组有效地执行相同操作的文件将是非常低效的,并且被认为是不好的做法。创建一个可以处理两个不同文件的解析器比编写两个只能处理一个特定文件的解析器更有意义。

为了更具体地回答您的问题,我将确定您正在解析哪个文件并做出相应的行为,无论您是使用 bool 还是其他什么都取决于您。

编辑:这是我脑海中突然出现的想法,所以如果出于某种原因这对你不起作用(就像我说的已经有一段时间了),或者有人有更好的想法,我全是耳朵。您仍然可以拥有一组包含解析器定义的文件(.h 和 .m)。您的解析器可以在其中包含两个类型为 Object1 和 Object2 的变量,它们的构建方式类似于您需要存储您为第一种类型的文件解析一次的数据结构,并为您的第二种类型的文件存储不同的定义文件类型。这样,当您确定您正在读取哪个文件后进行解析时,它只会更改您写入的这两个对象中的哪一个。您可以如何设置它也有很多变化,我还可以考虑一些您可能尝试做的事情,而这可能不起作用,但无论如何都有这个想法。

如果您认为这两组文件方法更适合您尝试编写的应用程序并且对您更有意义,鉴于 cmets 中已经讨论过的内容,这未必是一个坏主意。

【讨论】:

  • 请解释为什么它“效率极低”和“不好的做法”?
  • 好吧,如果你正在编写做同样事情的代码,解析 XML,你为什么要写两次呢?也许他有理由想以两种不同的方式重写解析器,但从他的问题来看,我不清楚这个原因是什么。
  • 从问题中所说的,他正在尝试解析两个包含不同数据的不同 XML 文件。所以每个都必须解析成不同的对象,这意味着需要设置不同的实例变量。所以他们不会重复做同样的事情。
  • 很难解释...从文件 1 中获取的一些信息会对从文件 2 中获取的信息产生影响...不知道这是否让事情更清楚(我应该编辑我的问题用这个)
  • 很公平,从 XML 解析来看,虽然我去年有一些简短的经验,但创建两个都只解析的文件的解决方案似乎不是一个好主意,尽管我没有创建要解析的 XML 对象,我只是将我的数据解析到我设置的 CoreData DB 中。我对您如何仍然只能使用一个文件有一个大致的想法,尽管取决于您的数据,Ben,它可能对您不起作用。您在问题中向我们提供的信息越多,我们就能越好地帮助您。我会用我的想法编辑我的答案。
【解决方案2】:

如果您想在一个视图中创建两个表视图,则需要创建一个 .h 和 .m 文件...如果您想创建单独的表视图,则需要创建两个 .h 和 .m。 ..

试试 TBXML 解析器...这是 xmlparsing 最简单的方法和更少的内存使用...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-06
    • 1970-01-01
    • 2012-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-14
    • 1970-01-01
    相关资源
    最近更新 更多