从XML字符串到XSLT到c#类对象
本文关键字:对象 XSLT 字符串 XML | 更新日期: 2023-09-27 18:07:59
我在XSLT转换方面没有太多经验,所以我想我可以在这里得到一些帮助。
我在我的。net程序中通过MSMQ接收这个大xml字符串。让我们的例子如下:
<ROOT>
<PO>
<PONUM> A101 </PONUM>
<DESCRIPTION> THis is sample PO </DESCRIPTION>
<ADDRESS> Addresss here </ADDRESS>
<ExtraInfo1> Any Info </ExtraInfo1>
<ExtraInfo2> Any Info </ExtraInfo2>
<POLINE>
<POLINENUM> Line1 </POLINENUM>
<NAME> Line 1 </NAME>
<DATE> 2009-01-01 </DATE>
<ExtraCol1> Col1 </ExtraCol1>
<ExtraCol2> Col1 </ExtraCol2>
<ExtraCol3> Col1 </ExtraCol3>
<ExtraCol4> Col1 </ExtraCol4>
</POLINE>
<POLINE>
<POLINENUM> Line2 </POLINENUM>
<NAME> Line 2 </NAME>
<DATE> 2011-11-21 </DATE>
<ExtraCol1> Col1 </ExtraCol1>
<ExtraCol2> Col1 </ExtraCol2>
<ExtraCol3> Col1 </ExtraCol3>
<ExtraCol4> Col1 </ExtraCol4>
</POLINE>
<POLINE>
<POLINENUM> Line3 </POLINENUM>
<NAME> Line 3 </NAME>
<DATE> 2012-01-07 </DATE>
<ExtraCol1> Col1 </ExtraCol1>
<ExtraCol2> Col1 </ExtraCol2>
<ExtraCol3> Col1 </ExtraCol3>
<ExtraCol4> Col1 </ExtraCol4>
</POLINE>
</PO>
</ROOT>
现在我需要xslt转换来获得一些选定的字段,并最终在。net类对象中获得结果以进行进一步处理:
c#类如下:
public class PO
{
public string PONUM { get; set; }
public string PODESCRIPTION { get; set; }
public List<POLINES> POLines { get; set; }
}
public class POLINES
{
public string POLINENUM { get; set; }
public string LINEDESCRIPTION { get; set; }
}
最后在我需要的PO类对象中Ponum = " a101 "PODESCRIPTION= "这是样品PO"
然后三个POLINES在public List POLines {get;设置;}
欢呼
不需要XSLT。XmlSerializer使用。它简单而简短。
PO po;
var xs = new XmlSerializer(typeof(PO));
using (var stringReader = new StringReader(xml))
using (var xmlReader = XmlReader.Create(stringReader))
{
xmlReader.ReadToFollowing("PO");
po = (PO)xs.Deserialize(xmlReader);
}
你的类应该看起来像:
public class PO
{
public string PONUM { get; set; }
[XmlElement("DESCRIPTION")]
public string PODESCRIPTION { get; set; }
[XmlElement("POLINE")]
public List<POLINES> POLines { get; set; }
}
public class POLINES
{
public string POLINENUM { get; set; }
[XmlElement("NAME")]
public string LINEDESCRIPTION { get; set; }
}
哪个xml节点必须符合linesesption属性?我在属性中写了NAME
。