- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在序列化对象时遇到问题。该对象是从 XSD 文件生成的。
这是来自 XSD 的元素:
<xs:element name="ResGuestRPHs" type="ResGuestRPHsType" minOccurs="0">
<xs:annotation>
<xs:documentation xml:lang="en">A collection of ResGuestRPH objects. </xs:documentation>
</xs:annotation>
</xs:element>
<xs:complexType name="ResGuestRPHsType">
<xs:annotation>
<xs:documentation xml:lang="en">A collection of unsigned integers serving as reference placeholders, and used as an index identifying which guests occupy this room</xs:documentation>
</xs:annotation>
<xs:simpleContent>
<xs:extension base="ListOfRPH"/>
</xs:simpleContent>
</xs:complexType>
<xs:simpleType name="ListOfRPH">
<xs:annotation>
<xs:documentation xml:lang="en">List of Reference Place Holders.</xs:documentation>
</xs:annotation>
<xs:list itemType="RPH_Type"/>
</xs:simpleType>
<xs:simpleType name="RPH_Type">
<xs:annotation>
<xs:documentation xml:lang="en">The Reference Place Holder (RPH) is an index code used to identify an instance in a collection of like items (e.g. used to assign individual passengers or clients to particular itinerary items).</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]{1,8}"/>
</xs:restriction>
</xs:simpleType>
此元素在序列化后应输出为(注意数字之间的空格表明它是列表的 2 个元素):
<ResGuestRPHs>1 2</ResGuestRPHs>
但是它是否在没有空格的情况下生成导致反序列化为仅 1 个元素的结果:
<ResGuestRPHs>12</ResGuestRPHs>
这是生成的对象:
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.18408")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.opentravel.org/OTA/2003/05")]
[System.Xml.Serialization.XmlRootAttribute(Namespace="http://www.opentravel.org/OTA/2003/05", IsNullable=true)]
public partial class ResGuestRPHsType
{
private System.Collections.Generic.List<string> textField;
/// <remarks/>
[System.Xml.Serialization.XmlTextAttribute()]
public System.Collections.Generic.List<string> Text
{
get
{
return this.textField;
}
set
{
this.textField = value;
}
}
}
这是用“WSCF.blue”生成的。当我将列表更改为数组时,它会出现同样的问题。当我使用它时,因为“XmlAttributeAttribute”是有效的(但它当然不使用 XSD 进行验证)。
有人知道为什么序列化不正确吗?
最佳答案
目前我使用以下“肮脏”的解决方案。添加到列表时,我手动添加了一个空格(resGuestRPH是要添加的变量):
ResGuestRPHs.Text.Add(resGuestRPH + " ");
读取列表时,我手动拆分了字符串:
ResGuestRPHs.Text = ResGuestRPHs.Text.First().Trim().Split(' ').ToList();
通过这种方式,XML 可以通过 XSD 进行验证,但我仍然希望有人能帮我找到一个“干净”的解决方案。
关于c# - XML 将列表对象序列化为从 XSD 文件生成的 XmlText (XmlTextAttribute),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22097177/
出于好奇,我尝试了一些原型(prototype)制作,但似乎只允许在第一个位置使用子例程的原型(prototype) &。 当我写作时 sub test (&$$) { do_somethin
我需要开发一个类似于 Android Play 商店应用程序或类似 this app 的应用程序.我阅读了很多教程,发现几乎每个教程都有与 this one 类似的例子。 . 我已经开始使用我的应用程
考虑一个表示“事件之间的时间”的列: (5, 40, 3, 6, 0, 9, 0, 4, 5, 18, 2, 4, 3, 2) 我想将这些分组到 30 个桶中,但桶会重置。期望的结果: (0, 1,
我是一名优秀的程序员,十分优秀!