小编Eth*_*nyl的帖子

XmlSerializer +抽象类+派生类=无用的命名空间

关于SO的第一个问题:,)它是关于XmlSerializer和命名空间问题的.

我知道如何从Xml文件的根元素中删除默认的Xml命名空间已经有很多主题,而且它不是主题.

我的问题是当你使用派生类时如何从子节点中删除它?

我已经创建了自己的序列化程序,可以使用自定义命名空间或只是忽略它们,并且它对根元素很有效.

但是当我使用抽象类在List中列出一些派生类时,序列化插入2属性在每个派生类的节点内.

像这样 :

<root>
  <elements>
    <element p3:type="XmlDerivedClass" xmlns:p3="{schema_url}" >
    </element>
  </elements>
</root>
Run Code Online (Sandbox Code Playgroud)

至于我的班级:

// Root element
[XmlRoot("root", Namespace="")]
public class XmlRootElement
{
    List<XmlBaseClass> _Elements;
}    

// Base class
[XmlInclude(typeof(XmlDerivedClass))] // Mandatory, prevents serialization errors
[XmlRoot(Namespace="")]
public abstract class XmlBaseClass

// Derived class
[XmlRoot("element", Namespace="")]
public class XmlDerivedClass : XmlBaseClass
Run Code Online (Sandbox Code Playgroud)

我试过一些常见的解决方案

  • 使用Namespace =""属性
  • 实现XmlNamespaceDeclarations属性(使用右空命名空间)
  • XmlRoot()从base clase移动到派生的clase
  • XmlRoot()更改为XmlElement()

我将尝试在List上添加XmlInclude标记,以查看它是否发生了变化.

到目前为止,没有任何方法可以删除那些该死的命名空间......

如果有人有解决方案,我会很高兴尝试.

[编辑21/02/2014] 好吧,我似乎是唯一一个面临这个问题的人.我将使用一个简单的 …

.net c# xml serialization xml-namespaces

7
推荐指数
1
解决办法
3682
查看次数

Android 4.0 - > 4.3(包含) - Webview页面之间的Web存储丢失

我正在开发一个Android项目,该项目依赖于WebView来浏览存储在设备上的多个HTML页面,并在需要将输入存储到数据库中时将其提交到webview.

每个页面都包含与jQuery绑定到上一页/下一页的控件,每个页面包含不同类型的输入(复选框,文本字段等).

最后一页包含一个Submit按钮,它使用JSInterface将结果保存在SQLite DB中.

另一个按钮(在自定义顶部导航栏中)提供相同的系统.

可以通过访问包含所有已保存输入的第一页来修改结果,jQuery系统将填充相应的输入.

有关更多详细信息,我正在使用SDK 19并针对4.4.2进行编译,但我曾经使用SDK 15并针对4.2.2进行编译,我没有遇到此问题.

如果有人需要查看已完成的操作,请在简化的系统中查看此JSBin.


问题

我正在使用SessionStorage存储页面之间的输入,我曾经使用过cookie但是当有超过150个键/值对时它们变得不可靠.

我的问题是在某些设备上,SessionStorage在页面之间消失.


测试协议

第一种情况 - 只留在第一页

如果我只留在第一页,填写输入然后发送结果,一切都很好.回来修改为我提供了一个完整的第一页.

第二种情况 - 在页面之间移动

填写第1页后,我转到第2页并填充新输入,然后在页面之间移动,以查看每个页面上的输入是否丢失.一切都到位,但如果我发送结果,则只传输当前页面输入.


Android版测试结果

  • 3.2 - 工程

  • 4.1.2 - 不起作用

  • 4.2.1 - 不起作用

  • 4.3 - 不起作用

  • 4.4.2 - 工程


测试解决方案

  • 覆盖WebViewClientshouldOverrideUrlLoading方法以返回False - 不起作用

  • 使用LocalStorage而不是SessionStorage并没有改变一件事

洞察

sessionStorage切换到localStorage没有帮助.

我发现了一些有关Android使用的WebKit版本的有用信息:

Android 3.2.1使用了相当旧的版本,但它有效(v534.13)

4.0到 …

javascript java android web-storage android-webview

5
推荐指数
1
解决办法
2763
查看次数