は、この上で、私のxmlを夢中にされて:xmlns属性が存在する場合、xmlをC#クラスに解析する方法は?
<?xml version="1.0"?>
<ArrayOfWorItems xmlns="http://someUrl" xmlns:i="http://www.w3.org/">
<WorkItem>
<ItemID>596</ItemID>
<ItemPressure>35.0000</ItemPressure>
<ItemTableID>14</ItemTableID>
<ItemVersion>AAAAAAAADGQ=</ItemVersion>
<ItemTemperature>-196.0000</ItemTemperature>
</WorkItem>
<WorkItem>
<ItemID>596</ItemID>
<ItemPressure>35.0000</ItemPressure>
<ItemTableID>14</ItemTableID>
<ItemVersion>AAAAAAAADGQ=</ItemVersion>
<ItemTemperature>-196.0000</ItemTemperature>
</WorkItem>
<WorkItem>
<ItemID>596</ItemID>
<ItemPressure>35.0000</ItemPressure>
<ItemTableID>14</ItemTableID>
<ItemVersion>AAAAAAAADGQ=</ItemVersion>
<ItemTemperature>-196.0000</ItemTemperature>
</WorkItem>
<WorkItem>
<ItemID>596</ItemID>
<ItemPressure>35.0000</ItemPressure>
<ItemTableID>14</ItemTableID>
<ItemVersion>AAAAAAAADGQ=</ItemVersion>
<ItemTemperature>-196.0000</ItemTemperature>
</WorkItem>
</ArrayOfWorItems>
私は私のクラスにこれを解析する:
[XmlRoot("ArrayOfWorItems")]
public class ArrayOfWorItems
{
public List<WorkItem> WorkItem { get; set; }
}
ロジック:
var doc = new XmlDataDocument();
doc.Load(path);
XmlNamespaceManager xmlNS = new XmlNamespaceManager(doc.NameTable);
xmlNS.AddNamespace("stupid_xmlns", @"http://someUrl");
string contents = doc.OuterXml;
MyXmlHandler handler = new MyXmlHandler();
var t = handler.ParseXml<ArrayOfWorItems>(contents);
Parseメソッド:
public T ParseXml<T>(string xmlStream)
{
XmlSerializer serializer = new XmlSerializer(typeof(T));
using (StringReader reader = new StringReader(xmlStream))
{
var items = (T)(serializer.Deserialize(reader));
return items;
}
}
Er ROR:
InnerException = {"http://someUrl'> was not expected."} Message = "There is an error in XML document (1, 23)."
はしばらくの間、これを関係者とそれを把握するカント、 はどのように私はこれを解決するのですか?
質問には正しいのでこの回答を受け入れますが、このすべての作業を行うために私は別の回答も追加しました。ありがとう@Gowri Pranith – ThunD3eR