2012-02-14 155 views
0

處理EXE報告「System.Xml.XmlException:有多個根元素,第2行,第2位」。這個XML爲什麼會導致「有多個根元素」錯誤?

返回的XML看起來是這樣的:

<?xml version="1.0" encoding="UTF-8"?> 
<api><response status="ok"><token>6a4a4dfe610572668167a67c3a0fa815</token></response></api> 

的EXE是一個黑盒子給我們,我們也沒有支持或文檔去。我們通過模擬其響應來重新創建API。我的XML看起來與舊API的XML完全相同,並且響應之前是<?php header('Content-type: text/xml'); ?>

有什麼想法?

+1

這個XML沒有錯。 – Nix 2012-02-14 18:39:04

+1

@Nix是正確的 - 問題應該在讀取XML的代碼中。也許這將有助於:http://blogs.clariusconsulting.net/kzu/reading-xml-document-fragments-in-net/ – alfasin 2012-02-14 18:48:05

+0

謝謝你們。確認我的想法。非常感激。 – jerrygarciuh 2012-02-14 19:42:35

回答

1

XML沒有問題,所以請檢查調用代碼。

如果您發佈,我們可以幫助您。

+0

我同意。這個二進制文件對我們來說是一個黑盒子,即使有人可以反編譯它,我也不會被允許發佈它。雖然謝謝! – jerrygarciuh 2012-02-15 03:22:50

+1

仍然在這個盲目的努力。 Windows專業版建議.NET XML解析器可能會遇到空白問題?在這種情況下,它將是<?xml version =「1.0」encoding =「UTF-8」?>之後的換行符。有沒有聽說過這是一個問題?我不是.NET的傢伙... – jerrygarciuh 2012-02-15 17:09:52

+0

我聽說過相反的情況,如果在DOC-TYPE之前有新行發現它有抱怨。 – Nix 2012-02-15 17:46:13

0

我將此作爲答案加入,但留下尼克斯的答案作爲選定的正確答案,希望可以幫助其他人解決這個難題。

我是PHP,像這樣分配的身份驗證令牌的值:

$string = $_SERVER['HTTP_USER_AGENT']; 
$string .= time(); 
$auth = md5($string); 

在某種意義上,這條線$string = $_SERVER['HTTP_USER_AGENT'];是造成.NET XML解析器感知空白或看時可能無法看到一個新行XML輸出,但註釋掉該行消除了「有多個根元素」錯誤。

感謝所有看過這個的人!

相關問題