以下LINQ to XML C#代码创建一个XElement
,其中一个XAttribute
:
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文档中创建了Worksheet元素:
<?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>
答案 0 :(得分:1)
我必须将我的XML ss名称空间定义为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:名称 XML属性:
<Worksheet ss:Name="Sheet1"