首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在XML属性上生成不必要的内联命名空间格式

在XML属性上生成不必要的内联命名空间格式
EN

Stack Overflow用户
提问于 2012-01-09 19:31:16
回答 1查看 451关注 0票数 0

下面的LINQ代码创建了一个具有一个C#的XElement

代码语言:javascript
复制
XElement xWorksheet = 
    new XElement("Worksheet", new XAttribute(XName.Get("Name", "ss"), "Sheet1"));

它生成一个内联命名空间,生成具有p1的下列XML元素:

代码语言:javascript
复制
<Worksheet p1:Name="Sheet1" xmlns:p1="ss" />

然而,我真正想要的是:

代码语言:javascript
复制
<Worksheet ss:Name="Sheet1" />

如何获得元素的第二种形式?

注意:如果您认识到XML结构,我将填写一个Excel电子表格,但这是关于这个问题的轶事。

最终,我将在以下Excel文档中创建工作表元素:

代码语言:javascript
复制
<?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>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-09 22:16:25

我必须将XML命名空间定义为XNamespace实例,即:

代码语言:javascript
复制
XNamespace ss = XNamespace.Get("urn:schemas-microsoft-com:office:spreadsheet");
// Note: The string value doesn't seem to matter in my case.

然后用属性名连接命名空间实例,如下所示:

代码语言:javascript
复制
// 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属性:

代码语言:javascript
复制
<Worksheet ss:Name="Sheet1" 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8794056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档