【发布时间】:2015-10-16 11:57:40
【问题描述】:
我有以下来自 10MB 文本文件的输入字符串
string data = "0x52341\n0x52341<?xml version=\"1.0\" encoding=\"UTF-8\"?><element1 value=\"3\"><sub>1</sub></element1>0x52341\n0x52341 <element1><sub><element>2</element></sub></element1>0x52341<element2><sub>3</sub></element2> <element2><sub>4</sub></element2>0x4312";
现在我想要 element1 和 element2 XML 节点的这个字符串
这种情况下的结果应该是
output[0] = "<element1 value="3"><sub>1</sub></element1>";
output[1] = "<element1><sub><element>2</element></sub></element1>";
output[2] = "<element2><sub>3</sub></element2>";
output[3] = "<element2><sub>4</sub></element2>";
我的努力:
我已经尝试过正则表达式,但是对于那个大文件来说速度很慢,我也尝试过
string[] output= input.Split(new string[] { "<element1>", "<element2>" }, StringSplitOptions.None);
string.Split() 是迂回的,因为它会抛出内存不足异常,并且分隔符在拆分时被删除。
问题: 有没有一种简单的方法可以从我的文本文件中解析出这些 xml 元素?
更新: 我简化了我的文件,因为我无法在 SO 中发布整个 10MB 文件 - 有时 xml 元素之间有 0x1234 值,有时没有
【问题讨论】:
-
我了解您使用 c#,您有很多东西要处理 html 解析:selenium、.Net htmlagilitypack、mshtml 为什么不将它们用于此目的?
-
如果您正在处理 XML,请使用像 Linq-to-XML 这样的 XML 解析器。
-
@juharr - 这不起作用,已经尝试过这种方法。我没有一个根,我有很多根(
element1和element2) -
@kenny - 不是整个文件,但
element1和element2是有效的 xml