1

显然,在处理使用标签命名空间前缀的 XML 文件时,Altova XMLSpy 2012 sp1 的代码生成器的最新版本中存在一个错误,您会发现生成的 XML 缺少前缀。在尝试了不同的版本并四处寻找后,我找到了解决该问题的方法,基本上您必须替换以下方法的内容(typebase.cs 中的第 110 行):

public XmlNode CreateElement(MemberInfo member) 

return XmlTreeOperations.AddElement(node, member);

那应该会变魔术。

有人可以证实这一点吗?

注意:我在这里发布这个是因为 Altova 似乎已经关闭了他们的支持论坛并且没有回复电子邮件查询......

问候并希望这对某人有所帮助。

Vlax

4

2 回答 2

1

您还可以修改构造函数来创建元素:

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。可能的解决方案在这里: clear namespaces from xml

于 2014-09-23T13:05:36.847 回答
0

您需要切换到 SPL 目录以自定义自动生成的代码。下面是 SPL 目录的路径。在修改 SPL 目录之前。请先学习 SPL。

C:\Program Files\Altova\XMLSpy2012\spl

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 Files\Altova\XMLSpy2012\spl\cs\MapForce
于 2012-06-15T11:54:55.827 回答