如何反序列化嵌套在另一个标记的文本部分中的标记
本文关键字:文本部 另一个 反序列化 嵌套 | 更新日期: 2023-09-27 18:10:42
如何表示下面XML的结构以便进一步反序列化为类?
<HeadElement id="1">
Text in HeadElement start
<SubElement samp="0">
Text in SubElement
</SubElement>
Continue text
</HeadElement>
我当前的代码是这样的:
[DataContract]
public class ClaimText
{
[DataMember, XmlElement(ElementName = "claim-ref")]
public ClaimRef claimref; // { get; private set; }
public void setclaimref(ClaimRef claimref_)
{
this.claimref = claimref_;
}
[DataMember, XmlText()]
public string txt; // { get; private set; }
public void settxt(string txt_)
{
this.txt = txt_;
}
}
给定以下XML内容:
<claim id="CLM-00016" num="00016">
<claim-text>16. The midgate assembly of <claim-ref idref="CLM-00015">claim 15</claim-ref>, further comprising a second ramp member connected to an opposite side of the midgate panel for selectively covering an opposite end of the pass-through aperture. </claim-text>
</claim>
我得到指向"claim-ref"的链接所在的对象,但不是整个文本:只有它的第二部分(",进一步包括…")。如何获得全文?
首先,您混合了DataContractSerializer
和XmlSerializer
的属性。
Ad rem:在混合元素情况下,最好使用XmlSerializer
。下面是使用XML的结构:
[XmlRoot(ElementName = "claim")]
public class ClaimText
{
[XmlAttribute]
public string id;
[XmlAttribute]
public string num;
[XmlElement(ElementName = "claim-text")]
public ClaimInnerContents contents;
}
public class ClaimInnerContents
{
[XmlElement(ElementName = "claim-ref", Type = typeof(ClaimRef))]
[XmlText(Type = typeof(string))]
public object[] contents;
}
public class ClaimRef
{
[XmlAttribute]
public string idref;
[XmlText]
public string text;
}
ClaimRef
和拆分的文本段被反序列化到contents
数组中作为对象。
当然,您可以(而且应该)为该数组的特定元素提供静态类型和检查访问器。