【发布时间】:2020-01-07 22:00:16
【问题描述】:
我想要实现的目标 XML:
<Row><Data ss:Type="String">value</Data></Row>
我目前得到的输出:
<Row xmlns=""><Data Type="Number">0</Data></Row>
我正在尝试使用 System.Xml 库创建目标 XML 代码,但是当我创建新元素时没有显示名称空间前缀。生成上述输出的代码片段:
XmlElement eRow = xDoc.CreateElement("Row");
XmlElement eData = xDoc.CreateElement("Data");
XmlAttribute xAt = xDoc.CreateAttribute("ss", "Type", null);
xAt.Value = "Number";
eData.Attributes.Append(xAt);
eData.InnerText = "0";
eRow.AppendChild(eData);
我正在尝试将此 XML 附加到已存在的文件中。我已将文件加载为
XmlDocument xTemp = new XmlDocument();
xTemp.Load(templatePath);
并且DocumentElement.Attributes 中已经有命名空间已经声明了我要使用的前缀:<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">。本质上,我试图让“ss”前缀出现在“类型”之前,就像我上面提供的目标一样。此外,输出将xmlns="" 显示为“行”标签中的一个属性,这是我从未添加过的。我认为这两个问题都与未声明命名空间有关,但如上所述,它应该已经在我加载的原始文档中声明。
如何生成我想要的目标 XML 代码?
【问题讨论】:
-
使用is之前需要定义ss。
-
我编辑了问题以添加一些必要的说明。简而言之,我已经加载了一个应该定义这些命名空间的文档,但是当我将属性添加到元素时,它没有正确显示。不幸的是,链接的问题并没有那种信息。