栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

我可以使XmlSerializer在反序列化时忽略名称空间吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

我可以使XmlSerializer在反序列化时忽略名称空间吗?

是的,您可以告诉XmlSerializer在反序列化期间忽略名称空间。

定义一个XmlTextReader忽略名称空间。像这样:

// helper class to ignore namespaces when de-serializingpublic class NamespaceIgnorantXmlTextReader : XmlTextReader{    public NamespaceIgnorantXmlTextReader(System.IO.TextReader reader): base(reader) { }    public override string NamespaceURI    {        get { return ""; }    }}// helper class to omit XML decl at start of document when serializingpublic class XTWFND  : XmlTextWriter {    public XTWFND (System.IO.TextWriter w) : base(w) { Formatting= System.Xml.Formatting.Indented;}    public override void WriteStartdocument () { }}

这是一个示例,说明如何使用该TextReader反序列化:

public class MyType1 {    public string Label    {        set {  _Label= value; }         get { return _Label; }     }    private int _Epoch;    public int Epoch    {        set {  _Epoch= value; }         get { return _Epoch; }     }        }    String RawXml_WithNamespaces = @"      <MyType1 xmlns='urn:booboo-dee-doo'>        <Label>This document has namespaces on its elements</Label>        <Epoch xmlns='urn:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'>0</Epoch>      </MyType1>";    System.IO.StringReader sr;    sr= new System.IO.StringReader(RawXml_WithNamespaces);    var o1= (MyType1) s1.Deserialize(new NamespaceIgnorantXmlTextReader(sr));    System.Console.WriteLine("nnDe-serialized, then serialized again:n");    s1.Serialize(new XTWFND(System.Console.Out), o1, ns);    Console.WriteLine("nn");

结果是这样的:

    <MyType1>      <Label>This document has namespaces on its elements</Label>      <Epoch>0</Epoch>    </MyType1>


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/568496.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号