一直在坚持这个,我的xml:
<?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);
解析方法:
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;
}
}
错误:
InnerException = {“http:// someUrl'&gt;不是 预期。”} Message =“XML文档中存在错误(1,23)。”
已经有一段时间了,无法弄明白, 我该如何解决这个问题?
答案 0 :(得分:1)
还需要使用Namespace属性指定Root类。
[XmlRoot("ArrayOfWorItems", Namespace = "http://someUrl")]
答案 1 :(得分:0)
在与朋友协商后,我设法让所有这些都得到了解决。
@Gowri Pranith从一开始我的资金实际上是正确的,但是我输入了错误的命名空间,一旦我发现了我还有另一个问题:
我用于解析json对象,因此解析时逻辑不同。 我的朋友告诉我,我的父类中没有list属性,因为xml没有像解析json时那样处理它,正确的方法是:
[XmlRoot("ArrayOfWorItems", Namespace = "http://someUrl")]
public class ArrayOfWorItems: List<WorkItem>
{
}
父类继承列表,解析器将它们呈现为子项