显然在最新版本的Altova XMLSpy 2012 sp1的代码生成器中存在错误使用使用标记命名空间前缀的 XML 文件时,您会发现生成的 XML 缺少前缀。在尝试了不同的版本并四处寻找后,我找到了该问题的解决方法,基本上您必须替换以下方法的内容(typebase.cs中的第 110 行):
public XmlNode CreateElement(MemberInfo member)
跟
return XmlTreeOperations.AddElement(node, member);
这应该会变魔术。
有人可以证实这一点吗?
注意:我在这里发布这个是因为 Altova 似乎已经关闭了他们的支持论坛,并且没有回复电子邮件查询......
问候并希望这对某人有所帮助。
弗拉克斯
您还可以修改用于创建元素的构造函数:
public XmlNode CreateElement(MemberInfo member)
{
string prefix = member.ContainingType.Namespace.prefix;
XmlDocument doc = node.OwnerDocument;
if (doc == null)
doc = (XmlDocument)node;
XmlNode child = doc.CreateElement(prefix, member.LocalName, member.NamespaceURI);
node.AppendChild(child);
return child;
}
但是,您仍然需要从生成的元素中删除命名空间 uri。可能的解决方案在这里:从 XML 中清除命名空间
您需要切换到 SPL 目录以自定义自动生成的代码。下面是 SPL 目录的路径。在修改 SPL 目录之前。请先学习声压级。
C:Program FilesAltovaXMLSpy2012spl
1. Study SPL directory first.
2. Select your lang in which you work.
Suppose you work in c# then modify the files inside the below path
C:Program FilesAltovaXMLSpy2012splcsMapForce