Я пытаюсь скормить xml, который веб-сервис java выплевывает через десериализацию xml, но, похоже, в файлах xml, которые у меня есть, отсутствуют пространства имен. Вот класс C #, созданный из WSDL:
[XmlTypeAttribute(Namespace="http://mynamespace.com")]
public class Customer {
[XmlElementAttribute(IsNullable=true)]
public string customerNo {
get; set;
}
[XmlElementAttribute(IsNullable=true)]
public string customerType {
get; set;
}
}
Видите определение пространства имен? В реальных файлах XML отсутствует декларация пространства имен, и они выглядят следующим образом:
<?xml version="1.0"?>
<Customer>
<customerNumber>1234</customerNumber>
<customerType />
</CreditCard>
Десериализатор Xml десериализует корневой объект, но все свойства имеют значение NULL. Мне удалось заставить его работать, либо удалив XmlTypeAttribute, либо отрегулировав файл xml, добавив пространства имен:
<xml version="1.0"?>
<Customer>
<customerNumber xmlns="http://mynamespace.com">1234</creditCardNo>
<customerType xsi:nil="true" xmlns="http://mynamespace.com" />
</Customer>
Проблема в том, что сами файлы xml имеют большой размер, и я не хочу делать это вручную и не хочу удалять атрибут. Как проще всего заставить его работать? Регенерировать весь документ с правильными атрибутами xmlns и десериализовать, используя это вместо этого?
message
, соответствующая схема XML,operation
,binding
и т. Д. - person John Saunders   schedule 10.07.2012xmlns:xsi
иxmlns:xsd
. Как вы вызываете сериализатор? - person Markus Jarderot   schedule 10.07.2012