我有这个xml:
<NewDataSet xmlns="http://anonymous_link_here">
<Table>
<Name>Example</Name>
</Table>
<Table>
<Name>Example</Name>
</Table>
<Table>
<Name>Example</Name>
</Table>
<Table>
<Name>Example</Name>
</Table>
</NewDataSet>
我尝试将此xml解析为List<myClass>
:
public static List<myClass> ConvertToList(string xml)
{
var objects= XDocument.Parse(xml);
var objectsList= (from o in objects.Root.Elements()
select new myClass()
{
Name = (string)o.Element("Name"),
}).ToList();
return objectsList;
}
myClass类别:
[Serializable]
[XmlRoot("Table"), Namespace="http://anonymous_link_here"]
public class myClass{
[XmlElement(ElementName="Name"), Namespace="http://anonymous_link_here"]
public string Name { get; set; }
}
我不知道为什么objectsList
中的元素计数是正确的,但是Name
属性为空。我认为以下内容有问题:Name = (string)o.Element("Name")
.任何帮助都将不胜感激。
2条答案
按热度按时间hfwmuf9z1#
问题在于,您对
o.Element("Name")
的调用查找名为Name
* 但没有命名空间 * 的元素,而您的元素位于文档的默认命名空间"http://anonymous_link_here"
中。幸运的是,LINQ to XML使得使用
XNamespace
可以很容易地解决这个问题:经过一些重写(和重命名以避免
myClass
),您的方法将如下所示:或者在表达式体方法中:
gtlvzcf82#
您也可以尝试下面的代码;通知名称= o.值非.元素,