[英]There is an error in XML document (1, 1). When deserializing a simple xml string
[英]Deserializing a string XML and error:There is an error in XML document (1, 2)
我需要反序列化字符串XML,但是我遇到了問題。
[XMLRoot]
public class OP
{
[XmlElement]
public string Auth;
[XmlElement]
public string User;
[XmlElement]
public string Password;
[XmlElement]
public string Client;
[XmlElement]
public string DownloadCode;
[XmlElement]
public string PartNumber;
[XmlElement]
public int FlexPO;
[XmlArray]
public string Terminals;
[XmlElement]
public string User;
}
public void Test()
{
var serializer = new XmlSerializer(typeof(OP));
OP result;
using (TextReader reader = new StringReader(XML))
{
result = (OP)serializer.Deserialize(reader);
}
}
這是代碼,這是XML:
<CreateManufactoryOrder xmlns="http://tempuri.org/">
<op>
<Auth>
<User>User</User>
<Password>Password</Password>
</Auth>
<Client>01425787000104</Client>
<DownloadCode>0460.0001</DownloadCode>
<PartNumber>M268-773-C4-BRA-3</PartNumber>
<FlexPO>887614_364</FlexPO>
<Terminals>
<String>529-995-835</String>
<String>529-995-836</String>
<String>529-995-837</String>
<String>529-995-838</String>
</Terminals>
</op>
</CreateManufactoryOrder>
因此,當我調試代碼返回錯誤時:XML文檔(1、2)中存在錯誤。 我已經嘗試過以多種方式更改代碼,但是沒有任何運行。
您需要指定根元素名稱和名稱空間,更新[XmlRoot]
屬性,如下所示:
[XmlRoot(ElementName = "CreateManufactoryOrder", Namespace= "http://tempuri.org/")]
添加后,我驗證了它現在可以反序列化而不會出現問題。
嘗試這個
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.Xml; using System.Xml.Serialization; namespace ConsoleApplication1 { class Program { const string FILENAME = @"c:\\temp\\testxml"; static void Main(string[] args) { CreateManufactoryOrder createManufacturyOrder = new CreateManufactoryOrder() { op = new Op(){ auth = new Auth(){ user = "User", password = "Password" }, client = "01425787000104", downLoadCode = "0460.0001", partNumber = "M268-773-C4-BRA-3", flexPO = "887614_364", terminals = new List<Terminal>(){ new Terminal(){ m_String = "529-995-835"}, new Terminal(){ m_String = "529-995-836"}, new Terminal(){ m_String = "529-995-837"}, new Terminal(){ m_String = "529-995-838"} } } }; Test(createManufacturyOrder); } static public void Test(CreateManufactoryOrder createManufacturyOrder) { StreamWriter writer = new StreamWriter(FILENAME); XmlSerializer serializer = new XmlSerializer(typeof(CreateManufactoryOrder)); serializer.Serialize(writer, createManufacturyOrder); writer.Flush(); writer.Close(); writer.Dispose(); string XML = File.ReadAllText(FILENAME); using (TextReader reader = new StringReader(XML)) { CreateManufactoryOrder result = (CreateManufactoryOrder)serializer.Deserialize(reader); } } } [XmlRoot("CreateManufactoryOrder")] public class CreateManufactoryOrder { [XmlElement("op")] public Op op { get; set; } } [XmlRoot("op")] public class Op { [XmlElement("Auth")] public Auth auth { get; set; } [XmlElement("Client")] public string client; [XmlElement("DownloadCode")] public string downLoadCode { get; set; } [XmlElement("PartNumber")] public string partNumber { get; set; } [XmlElement("FlexPO")] public string flexPO { get; set; } [XmlElement("Terminals")] public List<Terminal> terminals { get; set; } } [XmlRoot("Auth")] public class Auth { [XmlElement("User")] public string user { get; set; } [XmlElement("Password")] public string password { get; set; } } public class Terminal { [XmlElement("String")] public string m_String { get; set; } } }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.