2016-03-06 42 views
0

我有一个Excel表保存为XML文件,所以有一些行。我想要的是使用C#向最后一行添加新行。添加一个新的XML节点到最后一个相同的排序

结构:

<?mso-application progid="Excel.Sheet"?> 
<Workbook> 
    <DocumentProperties> 
    ... 
    </DocumentProperties> 
    <OfficeDocumentSettings> 
    ... 
    </OfficeDocumentSettings> 
    <ExcelWorkbook> 
    ... 
    </ExcelWorkbook> 
    <Styles> 
    ... 
    </Styles> 
    <Worksheet ss:Name="TDSheet"> 
    <Table> 
     <Column> 
     ... 
     </Column> 
     ... 
     <Column> 
     ... 
     </Column> 
     <Row> 
     ... 
     </Row> 
     <!-- HIER SHOULD APPEAR MY NEW ROW --> 
    </Table> 
    </Worksheet> 
</Workbook> 

我使用XmlDocument类。

+0

任何理由*为什么*您使用'XmlElement'而不是LINQ to XML?我肯定会在任何地方使用后者...这是一个非常清洁的API。 –

+0

我已经编写了一个使用XmlElement读取XML文档的过程,这是唯一的原因。我不想混合代码。 – relapse

+0

那么将它转换为使用'XElement'有多难?如果它真的只是读取一个文档,它应该是微不足道的... –

回答

0

它看起来像你只需要找到相关的Table元素,然后附加一个新的元素。例如,使用LINQ to XML,假设有只有一个Table元素:

var doc = ...; // XDocument.Load or whatever 
var table = doc.Descendants("Table").First(); 
table.Add(new XElement("Row", ...)); 

如果可以有不止一个Table元素,你需要找出如何找到正确的 - 我们可以目前从你的问题中讲不出来。

+0

如果我有XmlDocument而不是XDocument,该怎么办?那里没有后代列表。 – relapse

+0

@relapse:是的,'XDocument'比'XmlDocument'更容易使用,这就是为什么我建议在评论中使用它。我们在问题的注释中讨论了它,并且您说:“如果您向我展示它使用LINQ to XML的方式,那么我将删除我原始邮件的最后一行” - 因此,这个答案。这当然可以使用'XmlDocument'完成,但是我强烈建议使用LINQ to XML来代替。这是一个*英里*更好的API。 –

+0

是的,你说的对, – relapse

相关问题