【问题标题】:The best way of parsing xml [closed]解析xml的最佳方式[关闭]
【发布时间】:2012-11-19 18:29:40
【问题描述】:

你建议用什么来解析比如这个 XML 文件:

<file>
  <test1 a="true">
    <line1>aaa</line1>
    <line2>aaa</line2>
    <line3>aaa</line3>
    <line4>aaa</line4>
  </test1>
  <test2 a="true">
    <line1>aaa</line1>
    <line2>aaa</line2>
    <line3>aaa</line3>
    <line4>aaa</line4>
  </test2>
  <test3 a="false">
    <line1>aaa</line1>
    <line2>aaa</line2>
    <line3>aaa</line3>
    <line4>aaa</line4>
  </test3>
</file>
  • XmlReader
  • XmlTextReader
  • 别的东西?

我正在寻找最快和最短的方法。我尝试使用 XmlReader,但它需要更多额外的变量来检查当前正在解析哪个元素。
提前致谢。
C.H.

--更新 1-- 我想做的工作是将测试的每个元素分配给 struct "test"

【问题讨论】:

  • 在寻找 fastestshortest 方式之前,先找到一个可行的方式
  • 你在做什么解析? (例如,将模板应用于每个元素或搜索满足条件的第一个节点)您期望什么样的工作负载? (您是否一遍又一遍地重复使用同一个文档,每次都是新的 xml,您是否正在修改 xml 文档等)
  • 你已经为你所有的标签名编号了。这在 xml 中是多余且不寻常的。只需用“test”或“line”命名字段。如果你解析它,例如使用 xPath,您可以使用 position() 函数来获取此信息...

标签: c# .net xml xml-parsing


【解决方案1】:

查看Linq to XML。我不能说“最快”,但使用 XML 确实让我的生活更轻松。

【讨论】:

  • 同意。这绝对是最简单的方法。 Here's a link 用于解析它的示例,而不是创建新文档。
【解决方案2】:

如果文件格式不经常更改,请使用反序列化。它将为您提供用于反序列化文件的对象集合。这是最简单的方法。您可以阅读更多的序列化和反序列化。 http://msdn.microsoft.com/en-us/library/ms731073(v=vs.100).aspx

为了最快,所有这些都取决于文件的大小。

【讨论】:

    【解决方案3】:

    如果性能是一个问题,那么这是一个非常快的解析器

    http://www.majestic12.co.uk/projects/html_parser.php

    【讨论】:

      猜你喜欢
      • 2015-08-21
      • 2010-09-27
      • 1970-01-01
      • 1970-01-01
      • 2013-03-14
      • 1970-01-01
      • 2013-01-31
      • 2018-01-17
      • 1970-01-01
      相关资源
      最近更新 更多