【发布时间】:2013-10-26 07:20:19
【问题描述】:
我正在使用 C# 编写一个程序,该程序在 xml 级别编辑打开文档文件。例如,它将行添加到表中。
所以我将 content.xml 加载到 XmlDocument “doc”中并遍历 xml 结构。
假设我在 XmlNode “行”中有
XmlDocument doc = new XmlDocument();
doc.Load(filename);
...
XmlNode row = ...;
...
XmlNode cell = doc.CreateElement("table:table-cell");
row.Append(cell);
...
doc.Save(filename);
问题是,在文件中,新节点只包含
C# 只是决定忽略我告诉它的内容,并在不告诉我的情况下执行其他操作(起初我忽略了这个问题,并想知道为什么生成的 xml 看起来不错,但它为什么不起作用)。
从我目前收集到的信息来看,问题与“table:”是一个命名空间这一事实有关。当我还向 CreateElement 提供 NamespaceURI 时,我得到
我尝试使用 XmlTextWriter 并设置 writer.Settings.Namespaces = false,因为我认为这应该抑制 xmlns 的输出,但它只会导致异常 - 文档有一些命名空间,如果命名空间是禁止的设置为 false...(wtf!?抑制 xmlns 的输出似乎比在存在 xmlns 时抛出异常更合乎逻辑十亿倍...)
在一些类似的讨论中,我读到您应该手动设置 cell.Name,但此属性是只读的... 其他人建议在文本文件级别更改它(这是修修补补而且会很慢)
谁能给我一个提示?
【问题讨论】:
-
仅供参考,C# 并没有忽略任何东西。这只是编程语言。 .NET 忽略了你。它会很乐意忽略在 VB.NET 中编写相同代码的人。
标签: c# xml namespaces xml-namespaces