在我的案例中如何向root XML添加属性?

Fir*_*nov 3 c# xml

XML由以下代码创建.

DataSet das = new DataSet();
das = ds.Copy();
das.DataSetName = "Stock";

das.Tables[0].TableName = "Assortment";
das.Tables[0].Columns[1].ColumnName = "Item";
das.Tables[0].Columns[2].ColumnName = "Quantity";
das.Tables[0].Columns[3].ColumnName = "Price";
das.Tables[0].Columns[4].ColumnName = "ValidDate";
das.Tables[0].Columns[5].ColumnName = "Summ";
das.Tables[0].Columns[6].ColumnName = "Manufacturer";
das.Tables[0].Columns[7].ColumnName = "Supplier";
das.WriteXml(LocalPath);
Run Code Online (Sandbox Code Playgroud)

我得到以下xml:

<Stock>
  <Assortment>
    <ID>1</ID>
    <Item>L - ????????   ?/? ???  100???  ?50</Item>
    <Quantity>12</Quantity>
    <Price>41496.0000</Price>
    <ValidDate>01.01.1999</ValidDate>
    <Summ>497952.0000</Summ>
    <Manufacturer>????????</Manufacturer>
    <Supplier>????????</Supplier>
  </Assortment>
  <Assortment>
    <ID>1242</ID>
    <Item>L - ????????   ?/? ???  100???  ?50</Item>
    <Quantity>12</Quantity>
    <Price>10.8000</Price>
    <ValidDate>01.01.1999</ValidDate>
    <Summ>129.6000</Summ>
    <Manufacturer>????????</Manufacturer>
    <Supplier>????????</Supplier>
  </Assortment>
</Stock>
Run Code Online (Sandbox Code Playgroud)

如何向root XML添加属性?我想要这样

<Stock Date="11.11.2013">
  <Assortment>
    <ID>1</ID>
    <Item>L - ????????   ?/? ???  100???  ?50</Item>
    <Quantity>12</Quantity>
    <Price>41496.0000</Price>
    <ValidDate>01.01.1999</ValidDate>
    <Summ>497952.0000</Summ>
    <Manufacturer>????????</Manufacturer>
    <Supplier>????????</Supplier>
  </Assortment>
  <Assortment>
    <ID>1242</ID>
    <Item>L - ????????   ?/? ???  100???  ?50</Item>
    <Quantity>12</Quantity>
    <Price>10.8000</Price>
    <ValidDate>01.01.1999</ValidDate>
    <Summ>129.6000</Summ>
    <Manufacturer>????????</Manufacturer>
    <Supplier>????????</Supplier>
  </Assortment>
Run Code Online (Sandbox Code Playgroud)

将日期属性添加到Stock.因为我想在创建XML时读取日期.谢谢.

paq*_*mez 5

如果将属性添加到扩展属性:

das.ExtendedProperties.Add("Date", "11.11.2013");
Run Code Online (Sandbox Code Playgroud)

你可以写它 XmlWriteMode.WriteSchema

var das = new DataSet {DataSetName = "Stock"};
das.ExtendedProperties.Add("Date", "11.11.2013");
das.WriteXml(@"c:\temp\xml.xml", XmlWriteMode.WriteSchema);
Run Code Online (Sandbox Code Playgroud)

然后,如果你想读取值:

var xs = XNamespace.Get("http://www.w3.org/2001/XMLSchema");
var msprop = XNamespace.Get("urn:schemas-microsoft-com:xml-msprop");
var xml = XDocument.Load(@"c:\temp\xml.xml");
var attr = xml.Descendants(xs + "element").First();
var date = attr.Attributes().First(x => x.Name == msprop + "Date").Value;
Run Code Online (Sandbox Code Playgroud)