我有一個文件有效地包含多個相同格式的XML文件,因此該文件本身不是有效的XML;例如:將包含多個XML文件的單個大文件讀入C#中的多個xml記錄
<?xml version='1.0' encoding='UTF-8'?>
<Proposal xmlns="a namespace">
<ASubnode>Text</ASubNode>
<LotsOfOtherNodes />
</Proposal>
<?xml version='1.0' encoding='UTF-8'?>
<Proposal xmlns="a namespace">
<ASubnode>Text</ASubNode>
<LotsOfOtherNodes />
</Proposal>
....
我想處理所有建議節點,一次一個;例如:
foreach (var proposal in file)
do something
我不能使用XmlReader,因爲它在到達中間XML聲明節點時引發異常。我可能會將整個文件讀入一個字符串,然後使用Split方法,但這些文件的大小是千兆字節,因此作爲選項並不是特別有吸引力。看起來,我可以一次讀取一行文件,通過正則表達式搜索適當的節點,但這些文件不是像上面那樣以每行一個節點進行行格式化,而是包含非常長的多行節點,節點文本中出現隨機換行符。
有沒有手動實現文本解析器的方法?
ReadAllText,斯普利特,序列化 –
你可以使用'String.IndexOf',並從一個終端節點「跳」到接下來,處理它們之間的文本。 – germi
xml聲明是從新行開始的,還是可以從同一行開始? –