我正在尝试通过 xml 反序列化向 xml 提供一个 java web 服务,但似乎我拥有的 xml 文件缺少名称空间。这是从 WSDL 生成的 C# 类:
[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 反序列化器反序列化根对象,但所有属性均为空。我设法通过删除 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 属性重新生成整个文档并使用它来反序列化?