【发布时间】:2015-03-27 08:49:05
【问题描述】:
我有一个项目,我必须爬取给定的网站并获取用户在 Xml 文件中指定的一些请求内容。
配置文件属于这种类型。这里的例子我放了两个条目,但它可以有 1 或 2000。
<root>
<item>
<xpath>//meta[@name="description"]</xpath>
<name>Description></name>
</item>
<item>
<xpath>//meta[@http-equiv="Content-Language"]</xpath>
<name>Language</name>
</item>
</root>
序列化的 database.xml 属于这种类型:
<itemCollection>
<item>
<Foo>somedata</foo>
<bar>otherdata</bar>
<RequestedData>
<SpecialData>Data asked by user</specialData>
<SpecialDatal>Other data asked by user</specialData>
</RequestedData>
</item>
</itemCollection>
我需要什么(来自示例配置文件):
...
<RequestedData>
<Description>Some description</Description>
<Language>Some language</Language>
</RequestedData>
...
我需要使用配置文件的 Name 值来命名 SpecialData 属性。换句话说,我需要在运行时动态更改节点的属性名称
因为我必须使用XmlSerializer,所以这是一个很大的问题。
配置文件在带有List<string> 的对象中反序列化。
public class RequestedData
{
public string RequestedXpath { get; set; }
public string RequestedName { get; set; }
}
public class ExtractDataOptions : List<RequestedData>
{
public List<RequestedData> RequestedData;
public ExtractDataOptions()
{
}
}
我查看了互联网,我认为我的问题的解决方案是使用[DataContract] 或DataCollection,但我不知道从哪里开始,我很难理解它是如何工作的。
【问题讨论】:
标签: c# xml datacontract