2012-04-26 8 views
1

По-видимому, в последней версии генератора кода Altova XMLSpy 2012 sp1 имеется ошибка: при работе с файлами XML, использующими префикс пространства имен тегов, вы обнаружите, что в сгенерированном XML отсутствует префикс. Попробовав различные варианты и ковыряться я нашел исправление этой проблемы, в основном вы должны заменить содержимое следующим способом (строка 110 в typebase.cs):Добавление тегов с префиксом пространства имен сгенерированным кодом Altova XMLSpy 2012 (версия 2007r3)

public XmlNode CreateElement(MemberInfo member) 

с

return XmlTreeOperations.AddElement(node, member); 

Это должно делать магию.

Может кто-нибудь подтвердить это?

Примечание: Я отправляю это здесь, потому что кажется, что Altova закрыло их форум поддержки и там не отвечает на запросы по электронной почте ...

С уважением и надеюсь, что это поможет кому-то.

Vlax

ответ

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 
+0

Привет, Saroop спасибо за ваш ответ, но я знаю, как изменить шаблоны кода в XMLSpy. Вопрос был в большей степени в направлении того, почему код, поставляемый с XMlSpy 2012, не правильно обрабатывал пространства имен ... – Vlax

+0

Altova-форумы поддерживаются, поэтому, возможно, я должен задать этот вопрос там ... – Vlax

+0

@ Vlax: существует четыре пространства имен в SPL .Все не включайте весь код, необходимый для изменения кода cs_mapforce.cpp. –

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