gpt4 book ai didi

c# - 带有命名空间但没有 xmlns 的 XML

转载 作者:行者123 更新时间:2023-12-04 17:00:33 28 4
gpt4 key购买 nike

我正在使用 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 时,我得到
... - 但是原始文档没有这个 xmlns,所以我也不想要它...

我尝试使用 XmlTextWriter 并设置 writer.Settings.Namespaces = false,因为我认为这应该会抑制 xmlns 的输出,但它只会导致异常 - 文档有一些命名空间,如果 Namespaces 设置为false...(wtf!?如果 xmlns 存在,则抑制 xmlns 的输出似乎比抛出异常更合乎逻辑 10 亿倍...)

在一些类似的讨论中,我读到您应该手动设置 cell.Name,但此属性是只读的...
其他人建议在文本文件级别更改它(这是在修补,而且速度会很慢)

谁能给我一个提示?

最佳答案

每个命名空间都应该至少有一个带有 URI 的 xmlns 定义。这是两个标签之间的最终区别。

但是,您可以在文件中(在开头)只声明一次 xmlns 属性。


Creating a specific XML document using namespaces in C#

关于c# - 带有命名空间但没有 xmlns 的 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19432865/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com