c#如何能够我同时具有相同的值与另一个命名空间指定到 XAttribute 命名空间吗?

标签: Linq XML Excel C#
发布时间: 2017/2/28 21:48:13
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

所有我想要做是一个 XML 文档,用于向 Excel 导出我的数据表。

所以我需要的是这样的事情︰

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<?mso-application Excel.Sheet?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" />    

我使用的 System.Xml.Linq 和我几乎拥有它,但是我的代码保持到工作簿的前面添加"ss"。这是我的代码︰

    XDocument xmlssDoc2 = new XDocument(new XDeclaration("1.0", "utf-8", "yes"), new 
    XProcessingInstruction("mso-application", "Excel.Sheet"));

    XNamespace aw = "urn:schemas-microsoft-com:office:spreadsheet";
    XNamespace fc = "urn:schemas-microsoft-com:office:spreadsheet";
        XElement root = new XElement(aw + "Workbook",
            new XAttribute("xmlns", "urn:schemas-microsoft-com:office:spreadsheet"),
            new XAttribute(XNamespace.Xmlns + "ss", "urn:schemas-microsoft-com:office:spreadsheet")
        );        

我得到的结果是︰

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<?mso-application Excel.Sheet?>
<ss:Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" />    

请帮忙 !

解决方法 1:

参考源XElement ,看起来好像命名空间或前缀属性对推送推堆栈顺序另外在写作时,则检查是否匹配的元素从上到下的堆栈 — — 有效地做这场比赛以相反的顺序命名空间的属性将被添加。

所以,如果你添加命名空间以相反的顺序, ss 省略︰

        XDocument xmlssDoc2 = new XDocument(new XDeclaration("1.0", "utf-8", "yes"), new
        XProcessingInstruction("mso-application", "Excel.Sheet"));

        XNamespace blank = "urn:schemas-microsoft-com:office:spreadsheet";
        XNamespace ss = "urn:schemas-microsoft-com:office:spreadsheet";

        XElement root = new XElementTest(blank + "Workbook");
        root.Add(new XAttribute(XNamespace.Xmlns + "ss", ss));
        root.Add(new XAttribute("xmlns", blank));

        Debug.WriteLine(root.ToString());

生产︰

<Workbook xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns="urn:schemas-microsoft-com:office:spreadsheet" />  

当然,这意味着,数量级的 xmlns 属性规范发生了变化,最好不过这个问题不应根据 XML 规范。

官方微信
官方QQ群
31647020