【问题标题】:Generate XML file with subnodes from xsd file using c#使用c#从xsd文件生成带有子节点的XML文件
【发布时间】:2015-05-02 15:20:19
【问题描述】:

我有一个 xsd 文件 acount.xsd,我使用它创建了一个 acount.cs 文件,使用它创建了一个 xml 文件。我在 c# 中编写了以下命令,用于单击按钮以生成 xml 文件。

string PATH = "C:\\Sample.xml";
CreateEmptyFile(PATH);
var data = new AutoCount();
data.Product = "AutoCount Accounting";
data.Version = "1.5";
data.CreatedApplication = "BApp";
data.CreatedBy = "Business Solutions";
data.CreatedDateTime = DateTime.Now;

var serializer = new XmlSerializer(typeof(AutoCount));
using (var stream = new StreamWriter(PATH))
    serializer.Serialize(stream, data);

输出的 XML 文件是:

<?xml version="1.0" encoding="utf-8"?>
<AutoCount xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.autocountsoft.com/ac_accounting.xsd">
  <Product>AutoCount Accounting</Product>
  <Version>1.5</Version>
  <CreatedApplication>BApp</CreatedApplication>
  <CreatedBy>Business Solutions</CreatedBy>
</AutoCount>           

我需要一个 xml 文件,同时有子类,比如 输出 XML 文件应为:

<?xml version="1.0" encoding="utf-8"?>
<AutoCount xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.autocountsoft.com/ac_accounting.xsd">
  <Product>AutoCount Accounting</Product>
  <Version>1.5</Version>
  <CreatedApplication>BApp</CreatedApplication>
  <CreatedBy>Business Solutions</CreatedBy>
  <Sales DocNo = 'S0001'>
    <Item>XXX</Item>
    <Qty>2</Qty>
    <Price>6.00</Price>
  </Sales>
</AutoCount> 

为了实现它,我尝试了以下 C# 命令,但出现错误(已指定)我如何实现上述结果?

string PATH = "C:\\Sample.xml";
CreateEmptyFile(PATH);
var sales = new SalesInvoice();
sales.DocNo = "S0001";
sales.Item = "XXX";
sales.Qty= "2";
sales.Price= "6.00";
var data = new AutoCount();
data.Product = "AutoCount Accounting";
data.Version = "1.5";
data.CreatedApplication = "BApp";
data.CreatedBy = "Business Solutions";
data.CreatedDateTime = DateTime.Now;
data.SalesInvoice = sales; /*Error:  Cannot implicitly convert SalesInvoice to SalesInvoice[] */
var serializer = new XmlSerializer(typeof(AutoCount));
using (var stream = new StreamWriter(PATH))
    serializer.Serialize(stream, data);

【问题讨论】:

  • 发生错误(已指定)”:您似乎没有提供错误。

标签: c# xml xsd


【解决方案1】:

试试这个:

data.SalesInvoice = new [] { sales };

正如错误消息所述,您需要提供一组 SalesInvoice 对象。

【讨论】:

  • 非常感谢@nimeshjm。有效。你能告诉我如何为salesinvoice传递数据库值,这样如果数据库中有两行结果,那么salesinvoice标签会出现两次不同的值
  • 不确定我是否理解您的问题,不同的值存储在哪里?
  • 我不是硬编码节点的字符串,而是尝试从数据库中获取字符串并为 (int i = 0; i
  • 我以为我的答案是这样的,XXX26.00YYY412.00 如果数据网格有两行。
  • 你能打开一个新的单独问题吗?感觉这是一个不同的问题。
猜你喜欢
  • 2021-01-28
  • 1970-01-01
  • 2011-09-25
  • 1970-01-01
  • 1970-01-01
  • 2012-06-18
  • 2013-10-03
  • 2015-11-05
相关资源
最近更新 更多