我正在使用 C# 编写一个在 xml 级别上编辑打开文档文件的程序。例如,它将行添加到表中。
因此,我将 content.xml 加载到 XmlDocument “doc”中并遍历 xml 结构。假设我在 XmlNode“行”中有 <table:table-row> 节点,现在我想向它添加一个 <table:table-cell> 节点。所以我打电话
XmlDocument doc = new XmlDocument();
doc.Load(filename);
...
XmlNode row = ...;
...
XmlNode cell = doc.CreateElement("table:table-cell");
row.Append(cell);
...
doc.Save(filename);
问题是,在文件中,新节点只包含 <table-cell>...</table-cell>
C# 只是决定忽略我告诉它的内容并在没有告诉我的情况下执行其他操作(起初我忽略了这个问题,并想知道为什么它不起作用,尽管生成的 xml 看起来不错)。
从我到目前为止收集到的信息来看,问题与“table:”是一个命名空间这一事实有关。当我还向 CreateElement 提供 NamespaceURI 时,我得到 <table:table-cell table:xmlns="THE_URI" >... - 但原始文档没有这个 xmlns,所以我也不想要它...
我尝试使用 XmlTextWriter 并设置 writer.Settings.Namespaces = false,因为我认为,这应该抑制 xmlns 的输出,但它只会导致异常 - 文档有一些命名空间,如果将命名空间设置为,则禁止这些命名空间错误...(wtf!?如果存在 xmlns,则抑制 xmlns 的输出似乎比抛出异常更合乎逻辑十亿倍...)
在一些类似的讨论中,我读到你应该手动设置 cell.Name ,但是这个属性是只读的......其他人建议在文本文件级别更改它(这是修补,它会很慢)
谁能给我一个提示?