【发布时间】:2014-03-11 01:32:30
【问题描述】:
我有一个比较大的 xml 文件。即使我只需要文件的一部分,客户也会向我发送一个完整的文件。因此,我想解析出我需要的部分并处理这个新文件。
这是xml的一部分
<Activity>
<RetailFormat>ABC</RetailFormat>
<FeedDate>2014-02-06 21:01:10</FeedDate>
<ActivityId>665507</ActivityId>
<ActivityTitle>ABC 3.9.14 Hawaii </ActivityTitle>
<StartDate>2014-03-09</StartDate>
<EndDate>2014-03-15</EndDate>
<StartTime>00:00:00</StartTime>
<EndTime>23:59:59</EndTime>
<JANumber>0</JANumber>
<PlanItemNo>0</PlanItemNo>
<ChannelType>Circular</ChannelType>
<Version>
</Version>
</Activity>
我有一个需要搜索的 ActivityID 列表。如果 ActivityID 在列表中,我想将整个 Activity 复制到一个新文件中。如果没有,我想转到下一个活动。实际上是从开始标签向下的几百行。除了手动解析部分之外,我没有使用过 xml。我不知道是否有程序化的方式来处理这个问题。另外,我可能需要这个文件中的 15K 行。该文件中有 1.3MM 行。通过限制处理文件的大小,我可以大大缩短处理时间。
我正在寻找解决此问题的最有效方法。我暂时可以手动执行此操作,但我宁愿尽早限制它。
【问题讨论】:
-
这里有一个很大的“如果”……但“如果”文件已格式化,即。每行一行而不是一个巨大的无格式文本/xml文件,然后您可以将其视为普通文件并使用流阅读器,直到找到与您要查找的内容匹配的行,这将节省内存并成为非常快。选项二,linq-to-xml 并遵循此示例:msdn.microsoft.com/en-us/library/vstudio/…
标签: xml xml-parsing linq-to-xml