FileMode.append每次都添加一个新节点而不是子节点

时间:2013-02-04 06:06:13

标签: c# asp.net

C#代码如下。我在第一个条目创建了一个xml,然后使用.append属性将节点添加到xml。

XmlSerializer xs = new XmlSerializer(typeof(DataClass));
if (!File.Exists("Data.xml"))
{
    using (FileStream fs = new FileStream("Data.xml", FileMode.Create))
    {
        xs.Serialize(fs, data);
        fs.Close();
        fs.Dispose();
        MessageBox.Show("Data loaded to the xml");
    }
}
else if (File.Exists("Data.xml"))
{
    using (FileStream fs = new FileStream("Data.xml", FileMode.Append))
    {
        xs.Serialize(fs, data);
        fs.Close();
        fs.Dispose();
        MessageBox.Show("Data loaded to the xml");
    }
}

这导致xml如下。它为每个条目创建一个新节点 我可以在任何地方向xml添加主标记,因为我后来需要将数据加载到数据网格视图(xml需要格式良好)以及子节点。

<?xml version="1.0"?>
<DataClass xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <pathI>D:\POC\Input\1</pathI>
    <pathO>D:\POC\Output</pathO>
    <prefix>1_</prefix>
    <frequency>10</frequency>
</DataClass>
<?xml version="1.0"?>
<DataClass xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <pathI>D:\POC\Input\2</pathI>
    <pathO>D:\POC\Output</pathO>
    <prefix>2_</prefix>
    <frequency>20</frequency>
</DataClass>

而我想要的是:

<?xml version="1.0"?>--- node tag just once and not with every entry
<Data>--- a main tag open
    <DataClass xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
        <pathI>D:\POC\Input\1</pathI>
        <pathO>D:\POC\Output</pathO>
        <prefix>1_</prefix>
        <frequency>10</frequency>
    </DataClass>
    <DataClass xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
        <pathI>D:\POC\Input\2</pathI>
        <pathO>D:\POC\Output</pathO>
        <prefix>2_</prefix>
        <frequency>20</frequency>
    </DataClass>
</Data>-- main tag closing

0 个答案:

没有答案