【发布时间】:2014-01-01 06:08:35
【问题描述】:
我收到以下错误:
"Data at the root level is invalid. Line 1, position 1."
这里是WEB API部分代码:
//POST api/RunningValue_Import
public object PostRunningValue(HttpRequestMessage xml)
{
try
{
#region Retrieve XML string and Create XDocument
//the method below generates the same error:
//string tempXmlString = xml.Content.ReadAsStringAsync().Result;
//TextReader tr = new StringReader(tempXmlString);
//XDocument doc = XDocument.Load(tr);
XDocument doc = XDocument.Load(xml.Content.ReadAsStreamAsync().Result); //<=== ERROR!
#endregion
jQuery:
var inputText = inputText.replace(/ /g, ''); //eliminate spaces
inputText = inputText.replace(/\"/g, '\\"'); //escape double quotes
$.ajax({
type: "POST",
url: reqUrl,
data: inputText,
datatype: "text",
contentType: "text/xml"
});
inputText 变量内容:
inputText = "\\\"<?xmlversion=\\\"1.0\\\"encoding=\\\"utf-8\\\"standalone=\\\"yes\\\"?>\n<server>\n<networkAdapters>\n<networkAdapterid=\\\"3d9c0d9d-d353-4d78-b034-b29f2dd824a0\\\">\n</networkAdapter>\n</networkAdapter>\n</server>\\\""
原始 XML 字符串传递:
"<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<server>
<networkAdapters>
<networkAdapter id="3d9c0d9d-d353-4d78-b034-b29f2dd824a0">
</networkAdapter>
</networkAdapter>
</server>"
【问题讨论】:
-
您实际上在 XML 数据周围传递引号?你不应该。
-
哦,谢谢!现在我得到:“名称中不能包含 '=' 字符十六进制值 0x3d” .... 现在正在研究...
-
您也不应该在 XML 中放置 \n 字符。服务器不在乎它是否漂亮。
-
它在抱怨 "=" ;我也删除了 /n :-)
-
@Max 随时回答您自己的问题并接受它。它可能会帮助将来遇到同样问题的人
标签: xml asp.net-web-api linq-to-xml