从xml在数据集中分配默认值
本文关键字:集中 分配 默认值 数据集 数据 xml | 更新日期: 2023-09-27 18:20:17
我有这个文件:
<infNFe versao="2.00">
<ide>
<cUF>35</cUF>
<cNF>10123856</cNF>
...
</ide>
<det nItem="1">
<prod>
...
</prod>
<imposto>
<ICMS>
...
</ICMS>
<IPI>
<cEnq>999</cEnq>
<IPITrib>
<CST>49</CST>
<vBC>29.40</vBC>
...
</IPITrib>
</IPI>
</imposto>
</det>
<det nItem="2">
<prod>
...
</prod>
<imposto>
<ICMS>
...
</ICMS>
</imposto>
</det>
</infNFe>
请注意,第二个标签"det"中不存在标签"IPI"。
我需要用这个文件填充数据集,并确保所有标签都已填充。
我正在尝试这个:
DataSet ds = new DataSet();
ds.ReadXml(arquivo);
if (ds.Tables["IPI"] == null)
{
ds.Tables.Add("IPI");
}
if (ds.Tables["IPITrib"] == null) {
ds.Tables.Add("IPITrib");
}
if (ds.Tables["IPITrib"].Columns["vIPI"] == null)
{
ds.Tables["IPITrib"].Columns.Add("vIPI");
}
第二行没有标签,因为标签"IPI"包含在第一个标签"det"中。-IMO
如何手动填写第二条记录?
虽然这有点偏离主题,但我建议使用带有xml的类型化数据集。这里有一篇关于这方面的文章:http://www.codeproject.com/KB/database/XmlToTypedDataSet.aspx
如果您不需要数据集,我认为更好的方法是使用生成的xsd来生成类,从中可以序列化xml,反之亦然,命令行看起来像:
xsd.exe your.xsd/classes
我想更多的是在这里:http://www.codeproject.com/KB/XML/Serialization.aspx
事实上,使用类型化数据集/或序列化类将更容易编写和读取代码,并且您将自动得到答案:)