我需要將 XML 檔案反序列化為 C# 中的物件:
<?xml version="1.0" encoding="utf-16"?>
<Test xmlns:xsd=http://www.w3.org/2001/XMLSchema xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance>
<Number>110658419900</Number>
<WorkorderName>2103477915XVN35S_FR_LEFTX111</WorkorderName>
<RequestDate>2022-10-13T16:53:13.2171314 02:00</RequestDate>
<ShelfNumber>4</ShelfNumber>
</Test>
public class Test
{
public string Number { get; set; }
public string WorkorderName { get; set; }
public string RequestDate { get; set; }
public string ShelfNumber { get; set; }
}
我正在使用這種方法:
try
{
XmlSerializer serializer = new XmlSerializer(typeof(Test));
StreamReader reader = new StreamReader(fileSystemEventArgs.FullPath);
Test test = (Test)serializer.Deserialize(reader);
reader.Close();
return test;
}
catch (Exception ex)
{
string message = ex.Message;
}
但我收到一個錯誤:
{"There is an error in XML document (2, 17)."}
一切正常如果我從 XML 中洗掉它: xmlns:xsd=http://www.w3.org/2001/XMLSchema xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
我不知道為什么會這樣。如何解決這個問題?如何忽略這個 xmls:xsd 和 xmls:xsi?
uj5u.com熱心網友回復:
那個“xml”不是有效的 xml,決議器在這里大喊是正確的。xml 應該開始(注意引號):
<Test xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
(ETC)
但是,這些只是命名空間別名宣告,并且這些別名從未使用過,因此:您也可以在此處洗掉它們,讓您的 xml 作為開始
<Test>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/522331.html
標籤:C#xml反序列化
上一篇:XML/Xpath1.0:檢查給定節點的任何后代是否包含特定屬性值?
下一篇:lxmlXPath回傳空串列
