簡體   English   中英

C#XmlDocument.LoadXml(string)失敗-根級別的數據無效。 第1行的位置1。

[英]C# XmlDocument.LoadXml(string) fail -data at the root level is invalid. line 1 position 1. xmldocument

我正在使用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>

這是我的代碼:

WebRequest request = HttpWebRequest.Create(url);
using (WebResponse response = request.GetResponse())
{
    using (Stream stream = response.GetResponseStream())
    {
        stream.Flush();
        stream.Position = 0;
        XmlDocument doc = new XmlDocument();
        doc.Load(stream);
    }
}

運行代碼后,我在Doc.Load中遇到異常-“根級別的數據無效。 第1行,位置1”,解析XML ..

如何克服這個錯誤? 我嘗試了所有方法。 因為XML initail標頭格式錯誤。 我收到此錯誤,如何克服此問題?

如果您發布的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;

                }

謝謝大家

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM