【发布时间】:2014-04-09 09:37:26
【问题描述】:
这类似于What is the easiest way to convert this XML document to my object? 之类的问题,但我认为有一些额外的复杂性。
我想从这个 xml 中获取以下对象。但是,因为我的 Bean 类需要的东西是类似命名的子元素而不是属性,而且部件和集合有点乱。我不完全确定如何处理。
XML,我在一个 XDocument 中
<bean class="com.nathan.etc.etc">
<property name="documentName" value="\\myfilepath" />
<property name="containerNames">
<list>
<value>One</value>
<value>Two</value>
</list>
</property>
<property name="partNames">
<list>
<list>
<value>First Part of One</value>
<value>Second Part of One</value>
</list>
<list>
<value>First Part of Two</value>
<value>Second Part of Two</value>
</list>
</list>
</property>
</bean>
C#代码
class Bean {
public string FilePath {get; set;} //eg "\\myfilepath"
public List<Container> Containers {get; set;}
}
class Container {
public string Name {get; set;} //eg "One"
public List<Part > Parts {get; set;}
}
class Part {
public string Name {get; set;} //eg "First Part of One"
}
【问题讨论】:
-
我假设在链接的问题中有花哨的序列化技巧。我最初的计划是使用 XDocument 来挖掘我需要的东西,但这很棘手并且会产生易碎的混乱代码。
-
可能会更容易阅读您的 XML 并手动构建您的对象结构
-
你的意思是使用像 xml.linq 这样的东西: ... var properties = beanObject.Elements("property").ToList(); DocumentPath = properties.Where(item => item.Attribute("name").Value == "documentName").First().Attribute("value").Value; ...然后手动挖出来?
标签: c# xml deserialization