2010-09-27 136 views
4

我需要一個解析XML字符串(.NET,C#),不幸的是,沒有很好地形成.. XML流的是我得到的回覆是需要解析XML字符串

<fOpen>true</fOpen> 
<ixBugParent>0</ixBugParent> 
<sLatestTextSummary></sLatestTextSummary> 
<sProject>Vantive</sProject> 
<ixArea>9</ixArea> 

我已經嘗試過使用xml讀取器,但是因爲它認爲它崩潰了,理所當然地,當它試圖解析時有2個節點元素

有什麼我可以用這個做的嗎?我不能改變XML,因爲我無法控制發回XML的代碼..

任何幫助,將不勝感激。

感謝和問候

加甘·揚尤亞

回答

7

我想你可以使用XmlParserContextXmlTextReader重載之一,以指定的節點類型爲XmlNodeType.Element,類似於從MSDN這個例子(http://msdn.microsoft.com/en-us/library/cakk7ha0.aspx):

XmlTextReader tr = new XmlTextReader("<element1> abc </element1> 
    <element2> qrt </element2> 
    <?pi asldfjsd ?> 
    <!-- comment -->", XmlNodeType.Element, null); 

while(tr.Read()) { 
    Console.WriteLine("NodeType: {0} NodeName: {1}", tr.NodeType, tr.Name); 
    } 
+0

這比我提出的答案要容易一些。 – LarsH 2010-09-27 14:44:16

1

什麼你得到背面是一個良好的XML 片段但正如你指出的那樣,不是一個良好的XML文檔。你能

  • 圍繞返回的元素包圍一個頂級元素?或
  • 將返回的XML片段作爲外部實體從外殼XML文檔中引用,並將外殼文檔傳遞給XML閱讀器?
+1

是的,我這樣做@ larsH ..我不得不圍繞被調過的元素包圍一個頂級參數..那個想法總是存在......但是你不覺得,如果我這樣做並且讀取它的字符串,它會增加開銷?因爲我不得不做代碼,在生產中,即使我想,我也必須這樣做,它可能不是一個優雅的解決方案。 – Gagan 2010-09-28 13:16:21

+0

@ user412628:是的,它會增加一點開銷。如果你在.NET中解析XML,我認爲用@Michael建議使用XmlParserContext會更優雅。 – LarsH 2010-09-28 15:47:36