下面的LINQ代码创建了一个具有一个C#的XElement
XElement xWorksheet =
new XElement("Worksheet", new XAttribute(XName.Get("Name", "ss"), "Sheet1"));它生成一个内联命名空间,生成具有p1的下列XML元素:
<Worksheet p1:Name="Sheet1" xmlns:p1="ss" />然而,我真正想要的是:
<Worksheet ss:Name="Sheet1" />如何获得元素的第二种形式?
注意:如果您认识到XML结构,我将填写一个Excel电子表格,但这是关于这个问题的轶事。
最终,我将在以下Excel文档中创建工作表元素:
<?xml version="1.0"?>
<?mso-application progid="Excel.Sheet"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:html="http://www.w3.org/TR/REC-html40">
<Worksheet ss:Name="Sheet1">
<Table>
<Row>
<Cell>
<Data ss:Type="String">number </Data>
</Cell>
<Cell>
<Data ss:Type="String">name </Data>
</Cell>
</Row>
</Table>
</Worksheet>
</Workbook>发布于 2012-01-09 22:16:25
我必须将XML命名空间定义为XNamespace实例,即:
XNamespace ss = XNamespace.Get("urn:schemas-microsoft-com:office:spreadsheet");
// Note: The string value doesn't seem to matter in my case.然后用属性名连接命名空间实例,如下所示:
// Broken out into two steps for clarity.
XAttribute a = new XAttribute(ss + "Name", "Sheet1");
// Put attribute on element:
xWorksheet = new XElement("Worksheet", a);生成所需的ss:Name XML属性:
<Worksheet ss:Name="Sheet1" https://stackoverflow.com/questions/8794056
复制相似问题