2016-04-25 55 views
0

我正在使用C#中的一些xml,並且由於它的格式解析XML文件時出現了一些問題。它在文件中有非xml數據,我無法控制此文件的格式。該文件是「test.xml」(見下文)。我只關心數據的xml部分,但我不確定訪問它的最佳方式。任何想法或建議將不勝感激。如何解析其中包含非xml數據的xml

Test data -1 
Smith, 2234 

@@*j 

Random-- 

@<?xml version="1.0" encoding="utf-16"?> 
<ConfigMessage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.Test.com/schemas/Test.test.Config"> 
    <Config> 
    <Version>10</Version> 
    <Build>00520</Build> 
    <EnableV>false</EnableV> 
    <BuildL>22</BuildL> 
    <BuildP>\\testpath\test</BuildP> 
    </Config> 
</ConfigMessage> 
@ 
+1

你必須手動完成。找到XML在哪裏開始和結束,並修剪你的字符串。 – Jonesopolis

+1

我不會將其描述爲「其中包含非XML數據的XML」。我將其描述爲一個非XML文件,其中包含XML數據。關於非XML容器格式的唯一線索是一個示例,它不足以繪製任何通用規則,但您基本上需要解析XML部分,然後將其發送到XML解析器。 –

+0

謝謝你的建議,邁克爾。我同意你的結論......關於文件類型,它在技術上是一個xml文件(.xml),它有非xml數據。 – samuraiY

回答

0

把整個文件到包含中的第一個「<」最後「>」字符的文件檢測到任何一個字符串。那麼你可以把它當作普通的XML。如果整個文檔中存在隨機的非XML元素,但您需要添加其他邏輯來檢測開始/停止XML「塊」。

0

我可以建議你這樣的解決方案:打開你的僞XML像簡單的文本文件,閱讀整個文本,之後,使用正則表達式你應該採取XML文檔(原始文件的一部分,可以轉換爲XML [| startTag | 任何符號 |/endTag |]),將它放入XDocument(在內存中),現在將其解析爲XML文件。