2014-04-02 22 views
0

如何在Windows Phone的解析单个XML节点中,我描述了我的web服务结果代码:解析单个XML节点中的Windows Phone

void abcd_Completed(object sender, ServiceReference1.abcdCompletedEventArgs e) 
    { 
     Xdocument doc = XDocument.Parse(e.Result); 
    } 

我e.Result是

<root>1234</root> 

如果我在模拟器中运行这段代码,我得到的结果,但在设备返回的错误是这样的:

"Data at Root level is invalid" 

如何解决这个问题。我被困在这里。谢谢!

+0

这可能是由您的xml文件的错误结构引起的。第一个问题(愚蠢),你的xml文件有节点吗? – Olter

+0

@Olter不,我的xml文件没有,我认为它需要作为一个字符串,所以如何读取字符串? –

+0

它需要一个字符串,正确。但是如果您使用XDocument类,则还应该检查给定的字符串是否满足xml文件结构的规则。否则,它会抛出一个错误。 – Olter

回答

0

根级别的数据无效最有可能的意思是xml文件的结构无效。 注意,每个XML文件必须用头节点开始:

<?xml version="1.0"?> 

如果您的XML文件不包括这个头,XDocument.Parse方法不会解析该文件,为XML。

另外,这里是在MSDN的example。请参阅xml文件的外观。


现在,你的整个文件看起来像这样:

<root>1234</root> 

这不是一个XML文件。 XML文件应该是这样的:

<?xml version="1.0" encoding="UTF-8"?> 
<root>1234</root> 

然后你就可以访问根值:

string root = doc.Descendants("root").FirstOrDefault().Value; 
+0

我编辑了我的代码,它包含正确的节点。 –

+0

是的,我检查了你以前的问题,看到它是一个错字。 – Olter

+0

嘿兄弟,我已经编辑了我的Web服务响应,现在我正在获取具有“<?xml version =”1.0“encoding =”UTF-8“?>”但是仍然返回相同错误的XML文件。 请帮兄弟 –

0

如果您需要解析XML节点,你应该使用XElement.Parse代替XDocument.Parse

但您的情况是XML代码中的无效关闭标记,<root>节点未关闭,因为第二个<root>是下一个打开的标记,您应该将其更改为</root>

正确的XML是:<root>1234</root>

+0

它包含正确的节点,我编辑了我的代码,我真的很抱歉,我忘了提及 –

+0

你试图用XElement.Parse方法解析它吗? –

+0

是的..我已经尝试过,但它不工作。 –