首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# - YAXLib:“没有找到具有此名称的元素:”

C# - YAXLib:“没有找到具有此名称的元素:”
EN

Stack Overflow用户
提问于 2018-11-28 10:20:09
回答 1查看 161关注 0票数 1

我有两个类用于反/序列化XML文件。

XmlExampleBasicUnit.cs

代码语言:javascript
复制
[YAXSerializeAs("Unit")]
public class XmlExampleBasicUnit
{
    [YAXSerializeAs("StringVar")]
    public String StringVar { get; set; }
    [YAXSerializeAs("Int32Var")]
    public Int32 Int32Var { get; set; }
    [YAXSerializeAs("DoubleVar")]
    public Double DoubleVar { get; set; }
    [YAXSerializeAs("DateTimeVar")]
    public String DateTimeVar { get; set; }
    [YAXSerializeAs("CharVar")]
    public String CharVar { get; set; }
}

XmlExampleCollectionOfUnits.cs

代码语言:javascript
复制
[YAXSerializeAs("CollectionOfUnits")]
public class XmlExampleCollectionOfUnits
{
    [YAXSerializeAs("Units")]
    public List<XmlExampleBasicUnit> Units { get; set; }

    public XmlExampleCollectionOfUnits(List<XmlExampleBasicUnit> units)
    {
        Units = units;
    }

    public XmlExampleCollectionOfUnits()
    {
    }
}

我试图反序列化这个文件:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<CollectionOfUnits>
<Units>
    <Unit>
        <StringVar>TohleJeString</StringVar>
        <Int32Var>24</Int32Var>
        <DoubleVar>29.6</DoubleVar>
        <DateTimeVar>17.11.1968</DateTimeVar>
        <CharVar>c</CharVar>
    </Unit>
    <Unit>
        <StringVar>TohleJeTakéString</StringVar>
        <Int32Var>17</Int32Var>
        <DoubleVar>5.9</DoubleVar>
        <DateTimeVar>06.07.1415</DateTimeVar>
        <CharVar>p</CharVar>
    </Unit>
    <Unit>
        <StringVar>NoATohleTaké</StringVar>
        <Int32Var>2</Int32Var>
        <DoubleVar>78.5</DoubleVar>
        <DateTimeVar>06.12.1774</DateTimeVar>
        <CharVar>x</CharVar>
    </Unit>
</Units>

所有这些都是由以下函数处理的:

代码语言:javascript
复制
public T Import<T>(String fileName) where T : class
{
    YAXSerializer serializer = new YAXSerializer(typeof(T));
    return (T)serializer.Deserialize(fileName);
}

当我运行代码时,我得到以下错误:No elements with this name found: './Units'.,如您所见,已经有一个名为Units的元素。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-28 13:35:56

使用File.ReadAllText(fileName)从路径中读取所有xml内容,并将其传递给Deserialize方法,如下所示。

代码语言:javascript
复制
public static T Import<T>(String fileName) where T : class
{
    string xmlData = File.ReadAllText(fileName);              //Read xml content from path
    YAXSerializer serializer = new YAXSerializer(typeof(T));
    return (T)serializer.Deserialize(xmlData);                //Pass xml content to Deserialize.
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53517120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档