如何忽略 xml 命名空间?
我有一个测试 xml 文件,如下所示:
<Person>
<ContactInfo>
...
<ContactInfo>
</Person>
当我尝试反序列化时,一切正常。 但问题是,有时这个 xml 文件的结构是不同的——有时会添加 xml 命名空间。
<Person xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
<ContactInfo>
...
<ContactInfo>
</Person>
现在,当我进行序列化时,我收到 IOnvalidOperationException:“XML 文档 (1, 2) 中存在错误”。内部异常消息显示
不是预期的。
那么有人可以帮我解决这个问题吗?
I've got test xml file that looks like this:
<Person>
<ContactInfo>
...
<ContactInfo>
</Person>
When I'm trying to deserialize, everything works fine.
But the problem is that sometimes the structure of this xml file is different - xml namespaces are added sometimes.
<Person xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
<ContactInfo>
...
<ContactInfo>
</Person>
And now when I'm serializing, I get IOnvalidOperationException: "There is an error in XML document (1, 2)". The inner exception message says <Person xmlns='http://tempuri.org/PaymentInformationXml.xsd'>
was not expected.
So could anyone help me with this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
命名空间是 XML 中的基础(与可互换的命名空间不同)。如果 Person 在该命名空间中,您必须告诉它:
A namespace is fundamental in XML (unlike namespaces which are interchangeable). If Person is in that namespace, you must tell it:
有一篇关于 xml 的文章 这里
我也偶然发现了 accros这段代码:(非常有帮助)
希望这能有所帮助
there's an article about xml here
And i also stumbled accros this piece of code: (very helpfull)
hope this could help
查看 XmlSerializerNamespaces。
控制默认命名空间可以直接在 XmlSerializer 上完成:
...但是您的问题有点不清楚问题来自何处。
检查您的
Person
类[XmlType]
属性:您的
Person
类型的命名空间需要与序列化时使用的命名空间一致。Check out XmlSerializerNamespaces.
Controlling the default namespace can be done directly on the XmlSerializer:
... but your question is a little unclear about where the problem comes from.
Check your
Person
classes[XmlType]
attribute:The namespace for your
Person
type needs to be consistent with the one you use when serializing.