0

我想阅读这个 xml 并将其转换为列表以插入数据库

请帮忙

<?xml version="1.0" encoding="UTF-8"?>
-<xml>-<records>-<record><database path="J:\EndNote\PA-03\1.enl" name="1.enl">1.enl</database><source-app name="EndNote" version="14.0">EndNote</source-app><rec-number>38</rec-number>-<foreign-keys><key db-id="r50aeetv1taarsewtwsvrr2h2wtzde5z25pp" app="EN">38</key></foreign-keys><ref-type name="Journal Article">17</ref-type>-<contributors>-<authors>-<author><style size="100%" font="default" face="normal">Patrick Carpenter</style></author></authors></contributors>...

我的 xml 架构

编辑:

它用于导出的 EndNote

它太乱了,它不起作用

请检查这个

完整的xml链接

4

2 回答 2

2

最快的方法是使用 xsd.exe 生成序列化类:

1) 生成模式定义

xsd file.xml [/outputdir:directory]

如果 xml 供应商已经准备好 xsd 模式,则不需要此步骤(示例 xml 没有定义任何使用的 xsd 模式)

2) 从 xsd 模式生成类:

xsd file.xsd {/classes | /dataset} [/element:element]
         [/language:language] [/namespace:namespace]
         [/outputdir:directory] [URI:uri]

3)使用xml序列化器从生成的类中反序列化:

http://msdn.microsoft.com/en-us/library/dsh84875.aspx
于 2012-07-25T07:14:20.973 回答
1

为 XML 内容的模型创建类,例如:

class Records
{
    public List<Record> records { get; set }
}

class Record
{
    public RecordDatabase database { get; set }
    ...
    public int rec_number { get; set }
    ...
}

class RecordDatabase
{
    public string path { get; set }
    public string name { get; set }
}

...

然后您可以将您的 XML 文件反序列化为一个对象:

Records records = null;
string path = "importfile.xml";
XmlSerializer serializer = new XmlSerializer(typeof(Cars[]));
StreamReader reader = new StreamReader(path);
reader.ReadToEnd();
records = (records)serializer.Deserialize(reader);
reader.Close();
于 2012-07-25T07:22:45.170 回答