[英]Deserializing a string XML and error:There is an error in XML document (1, 2)
I need deseriliazing a string XML, but I've a problem. 我需要反序列化字符串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);
}
}
This is code and this is the XML: 这是代码,这是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>
So, when I debug the code return error: There is an error in XML document (1, 2). 因此,当我调试代码返回错误时:XML文档(1、2)中存在错误。 I already try change the code in much ways, but nothing did run. 我已经尝试过以多种方式更改代码,但是没有任何运行。
You need to specify the root element name and namespace, update your [XmlRoot]
attribute to be like so: 您需要指定根元素名称和名称空间,更新[XmlRoot]
属性,如下所示:
[XmlRoot(ElementName = "CreateManufactoryOrder", Namespace= "http://tempuri.org/")]
I verified it now deserializes without issue after adding that. 添加后,我验证了它现在可以反序列化而不会出现问题。
Try this 尝试这个
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.