Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#XmlDocument.LoadXml(字符串)失败-根级别的数据无效。第1行位置1。XML文档_C#_Xml_Web Services - Fatal编程技术网

C#XmlDocument.LoadXml(字符串)失败-根级别的数据无效。第1行位置1。XML文档

C#XmlDocument.LoadXml(字符串)失败-根级别的数据无效。第1行位置1。XML文档,c#,xml,web-services,C#,Xml,Web Services,我正在使用C#中的Webservice,它返回如下所示的XML格式 <ArrayOfLoanReportViewModel xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/App.ViewModels"> <LoanReportViewModel> <AccessionNumber>00106</A

我正在使用C#中的Webservice,它返回如下所示的XML格式

    <ArrayOfLoanReportViewModel xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/App.ViewModels">
<LoanReportViewModel>
<AccessionNumber>00106</AccessionNumber>
<Amount>2.00</Amount>
<Author>DeSerio ,Tasha</Author>
<BalanceDays>2</BalanceDays>
<BalanceLimit>1</BalanceLimit>
<Charges>1.00</Charges>
<CurrentLoans>2</CurrentLoans>
<Email>none@yahoo.com.my</Email>
<Expiry>22/08/2018 00:00:00</Expiry>
<Isbn>9781600854316</Isbn>
<LoanLimit>3</LoanLimit>
<MemberId>30712</MemberId>
<Name>SUHAINA BT OMAR</Name>
<RenewLimit>1</RenewLimit>
<ReserveLimit>1</ReserveLimit>
<Title>
Salad for Dinner: Simple Recipes for Salads that Make a Meal
</Title>
<loanDueDate>14/06/2015</loanDueDate>
<loanStartDate>08/06/2015</loanStartDate>
</LoanReportViewModel>
<LoanReportViewModel>
<AccessionNumber>0000159542</AccessionNumber>
<Amount>4.00</Amount>
<Author i:nil="true"/>
<BalanceDays>4</BalanceDays>
<BalanceLimit>1</BalanceLimit>
<Charges>1.00</Charges>
<CurrentLoans>2</CurrentLoans>
<Email>none@yahoo.com.my</Email>
<Expiry>22/08/2018 00:00:00</Expiry>
<Isbn>9789675415692</Isbn>
<LoanLimit>3</LoanLimit>
<MemberId>30712</MemberId>
<Name>SUHAINA BT OMAR</Name>
<RenewLimit>1</RenewLimit>
<ReserveLimit>1</ReserveLimit>
<Title>
Setitis rasa dalam Alunan Kata Koleksi Puisi Program Maraton Pembudayaan 1Malaysia Penyusun: Nor Suhaila Che Pa, Suhaidah Said, Siti Nurul Jannah Fital
</Title>
<loanDueDate>12/06/2015</loanDueDate>
<loanStartDate>08/06/2015</loanStartDate>
</LoanReportViewModel>
<LoanReportViewModel>
<AccessionNumber>00105</AccessionNumber>
<Amount>4.00</Amount>
<Author>DeSerio ,Tasha</Author>
<BalanceDays>4</BalanceDays>
<BalanceLimit>2</BalanceLimit>
<Charges>1.00</Charges>
<CurrentLoans>1</CurrentLoans>
<Email>none@yahoo.com</Email>
<Expiry>01/08/2020 00:00:00</Expiry>
<Isbn>9781600854316</Isbn>
<LoanLimit>3</LoanLimit>
<MemberId>10301</MemberId>
<Name>HAINI BINTI MOHD SALLEH</Name>
<RenewLimit>1</RenewLimit>
<ReserveLimit>1</ReserveLimit>
<Title>
Salad for Dinner: Simple Recipes for Salads that Make a Meal
</Title>
<loanDueDate>12/06/2015</loanDueDate>
<loanStartDate>05/06/2015</loanStartDate>
</LoanReportViewModel>
<LoanReportViewModel>
<AccessionNumber>0000157728</AccessionNumber>
<Amount>3.00</Amount>
<Author>ARIFF Raihan</Author>
<BalanceDays>6</BalanceDays>
<BalanceLimit>2</BalanceLimit>
<Charges>0.50</Charges>
<CurrentLoans>1</CurrentLoans>
<Email/>
<Expiry>01/07/2008 00:00:00</Expiry>
<Isbn>9789673640584</Isbn>
<LoanLimit>3</LoanLimit>
<MemberId>HPYM08641S</MemberId>
<Name>TAN AI WEI</Name>
<RenewLimit>1</RenewLimit>
<ReserveLimit>1</ReserveLimit>
<Title>
Kisah Puteri Rupawan Penulis: Ariff Raihan ; Ilustrator: Adeeb
</Title>
<loanDueDate>10/06/2015</loanDueDate>
<loanStartDate>08/06/2015</loanStartDate>
</LoanReportViewModel>
<LoanReportViewModel>
<AccessionNumber>100100100</AccessionNumber>
<Amount>0.00</Amount>
<Author>Karen Ansel</Author>
<BalanceDays>7</BalanceDays>
<BalanceLimit>1</BalanceLimit>
<Charges>0.00</Charges>
<CurrentLoans>2</CurrentLoans>
<Email>nana@gmail.com</Email>
<Expiry>09/04/2016 00:00:00</Expiry>
<Isbn>9781740899802</Isbn>
<LoanLimit>3</LoanLimit>
<MemberId>10310</MemberId>
<Name>Nurul Farhana Mohd Fakeh</Name>
<RenewLimit>10</RenewLimit>
<ReserveLimit>10</ReserveLimit>
<Title>
The Baby and Toddler Cookbook: Fresh, Homemade Foods for a Healthy Start
</Title>
<loanDueDate>09/06/2015</loanDueDate>
<loanStartDate>05/06/2015</loanStartDate>
</LoanReportViewModel>
<LoanReportViewModel>
<AccessionNumber>0000146757</AccessionNumber>
<Amount>0.00</Amount>
<Author>Siti Rosmizah 1972-</Author>
<BalanceDays>17</BalanceDays>
<BalanceLimit>1</BalanceLimit>
<Charges>0.00</Charges>
<CurrentLoans>2</CurrentLoans>
<Email>nana@gmail.com</Email>
<Expiry>09/04/2016 00:00:00</Expiry>
<Isbn>9789675822018</Isbn>
<LoanLimit>3</LoanLimit>
<MemberId>10310</MemberId>
<Name>Nurul Farhana Mohd Fakeh</Name>
<RenewLimit>10</RenewLimit>
<ReserveLimit>10</ReserveLimit>
<Title>7 hari mencintaiku Siti Rosmizah</Title>
<loanDueDate>30/05/2015</loanDueDate>
<loanStartDate>28/05/2015</loanStartDate>
</LoanReportViewModel>
<LoanReportViewModel>
<AccessionNumber>0000159109</AccessionNumber>
<Amount>24.00</Amount>
<Author>ROSE Eliza</Author>
<BalanceDays>24</BalanceDays>
<BalanceLimit>2</BalanceLimit>
<Charges>1.00</Charges>
<CurrentLoans>1</CurrentLoans>
<Email>yaya@yahoo.com</Email>
<Expiry>09/04/2016 00:00:00</Expiry>
<Isbn>9789670535654</Isbn>
<LoanLimit>3</LoanLimit>
<MemberId>10210</MemberId>
<Name>Nurul Farehah Mohd Sabri</Name>
<RenewLimit>1</RenewLimit>
<ReserveLimit>1</ReserveLimit>
<Title>Sayang Awak Mr.Bear Rose Eliza</Title>
<loanDueDate>23/05/2015</loanDueDate>
<loanStartDate>19/05/2015</loanStartDate>
</LoanReportViewModel>
</ArrayOfLoanReportViewModel>
运行代码后,在解析XML时,Doc.Load中出现异常--“根级别的数据无效。第1行,位置1”


如何克服这个错误,?我尝试了所有的方法。因为XML初始邮件头的格式错误。我遇到了这个错误,如何克服这个问题?

如果您发布的XML是您收到的整个XML,那么它缺少一个根级别的元素。尝试使用
XmlDocumentFragment

类似这样的事情应该会奏效:

var doc = new XmlDocument();
var xml = doc.CreateDocumentFragment();
xml.InnerXml = stream;

最后我解决了这个问题。对其他面临此问题的人有用

工作代码:

               WebRequest request = WebRequest.Create(url);
                // If required by the server, set the credentials.r
                request.Credentials = CredentialCache.DefaultCredentials;
                request.ContentType = "application/xml; charset=utf-8";
                // Get the response.
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                //// Display the status.
                //Console.WriteLine(response.StatusDescription);
                //// Get the stream containing content returned by the server.
                Stream dataStream = response.GetResponseStream();
                //   Open the stream using a StreamReader for easy access.
                StreamReader reader = new StreamReader(dataStream);
                // Read the content. 
                string responseFromServer = reader.ReadToEnd();

                DataSet ds = new DataSet();

                ds.ReadXml(new StringReader(responseFromServer));

                if (ds.Tables[0].Rows.Count != 0)
                {
                    for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                    {
                        strArrNames.Add(ds.Tables[0].Rows[i]["Name"].ToString());
                        strArrEmails.Add(ds.Tables[0].Rows[i]["Email"].ToString());
                        strArrTitles.Add(ds.Tables[0].Rows[i]["Title"].ToString());
                        strArrBalanceDays.Add(ds.Tables[0].Rows[i]["BalanceDays"].ToString());
                        strArrLoanDueDates.Add(ds.Tables[0].Rows[i]["loanDueDate"].ToString());

                    }

                    overduestatus = true;

                }
WebRequest-request=WebRequest.Create(url);
//如果服务器需要,请设置凭据。r
request.Credentials=CredentialCache.DefaultCredentials;
request.ContentType=“application/xml;charset=utf-8”;
//得到回应。
HttpWebResponse=(HttpWebResponse)request.GetResponse();
////显示状态。
//Console.WriteLine(response.StatusDescription);
////获取包含服务器返回的内容的流。
Stream dataStream=response.GetResponseStream();
//使用StreamReader打开流以便于访问。
StreamReader=新的StreamReader(数据流);
//阅读内容。
字符串responseFromServer=reader.ReadToEnd();
数据集ds=新数据集();
ReadXml(新的StringReader(responseFromServer));
if(ds.Tables[0].Rows.Count!=0)
{
对于(int i=0;i

谢谢大家

响应编码是什么?您会得到一个不同的错误-XML无效,因为它没有
LoadReportViewModel
ArrayOfLoanReportViewModel
的结束元素。你有没有把你的
读成
字符串
来看看它到底是什么样子的?即使是一个有效的XML,我也有同样的问题,似乎XmlDocument.Load(stream)方法的行为很奇怪。将流转换为字符串并使用XmlDocument.LoadXml(string)后,效果很好。您的代码中有.LoadXml的标题和.Load,哪一个是正确的?编辑了完整的XML响应
               WebRequest request = WebRequest.Create(url);
                // If required by the server, set the credentials.r
                request.Credentials = CredentialCache.DefaultCredentials;
                request.ContentType = "application/xml; charset=utf-8";
                // Get the response.
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                //// Display the status.
                //Console.WriteLine(response.StatusDescription);
                //// Get the stream containing content returned by the server.
                Stream dataStream = response.GetResponseStream();
                //   Open the stream using a StreamReader for easy access.
                StreamReader reader = new StreamReader(dataStream);
                // Read the content. 
                string responseFromServer = reader.ReadToEnd();

                DataSet ds = new DataSet();

                ds.ReadXml(new StringReader(responseFromServer));

                if (ds.Tables[0].Rows.Count != 0)
                {
                    for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                    {
                        strArrNames.Add(ds.Tables[0].Rows[i]["Name"].ToString());
                        strArrEmails.Add(ds.Tables[0].Rows[i]["Email"].ToString());
                        strArrTitles.Add(ds.Tables[0].Rows[i]["Title"].ToString());
                        strArrBalanceDays.Add(ds.Tables[0].Rows[i]["BalanceDays"].ToString());
                        strArrLoanDueDates.Add(ds.Tables[0].Rows[i]["loanDueDate"].ToString());

                    }

                    overduestatus = true;

                }