2012-02-14 84 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输出,但注释掉该行消除了“有多个根元素”错误。

感谢所有看过这个的人!

相关问题