2013-01-16 148 views
-1

我需要解析看起來像這樣解析數據

1.<?xml version="1.0" encoding="UTF-8"?> 
2.<Root> 
3.<Record> 
4.<in><![CDATA[<?xml version="1.0" encoding="UTF-8"?><XML><Attribute AttrID="A">Test</Attribute>-<Attribute AttrID="B"> <![CDATA[Aap Noot Mies]]> </Attribute>]]></XML></in> 
5.<out><![CDATA[]]></out> 
6.</Record> 
7.</Root> 

我得到一個埃羅在分析行號4 XML文件有沒有辦法逃避一個CDATA結束標記(]]> )在XML文檔中的CDATA部分中。

+1

XML不允許嵌套的CDATA部分,它看起來像您的外部CDATA的打開和關閉甚至沒有正確形成。爲什麼你有這樣的XML?有沒有可能以不同的方式產生它? – JLRishe

+0

你的解析器是什麼? –

+0

嗯,我可以以某種方式處理它,以便我的數據得到正確的解析器並取代cdata的最後結束標記。我正在使用SAXParser。 – Aditya

回答

3

您的輸入沒有得到很好的形成有幾個錯誤,我認爲你需要解決什麼產生的,產生更多的東西一樣

<?xml version="1.0" encoding="UTF-8"?> 
<Root> 
<Record> 
<in><![CDATA[<?xml version="1.0" encoding="UTF-8"?><!-- - --><XML><Attribute AttrID="A">Test</Attribute>-<Attribute AttrID="B"> <![CDATA[Aap Noot Mies]]<![CDATA[> </Attribute></XML>]]></in> 
<out><![CDATA[]]></out> 
</Record> 
</Root> 

注意外CDATA需要<![CDATA[<!CDATA[首先使用]]>需求被引用(例如,通過停止和啓動外部CDATA部分)。需要在</XML>之後移動外部]]>,以便引用元素的結尾和開始。

這使得在技術上很好形成的文件,雖然與名稱XML元件(或者通常開始用大寫或小寫是xml保留由W3C在XML相關的規範使用,不應在用戶XML使用除非它是一個特定的元素或屬性(例如由W3C定義的xmlns

另外,我在XML聲明之後在破折號周圍添加了(引號)註釋,就好像該CDATA節被提取並製作成XML記錄它會使得生成的文檔不能很好地形成,因爲只有空格或註釋和PI在第一個元素之前才被允許。

+0

謝謝大衛,雖然我不能改變來源,但我想我可以用我的代碼手動處理它。 – Aditya

+0

那麼源代碼就不是XML,所以需要使用非xml工具編輯它才能使用XML解析器處理它。它每10個字符左右運行一個致命的語法錯誤,這是一個相當成就的事情:-) –

+0

我瞭解David。非常感謝:) – Aditya