如何使用 Linq Lambda 从给定密钥解析 XML 文件

我正在尝试使用 Linq 和 Lambda 表达式解析 xml 文档,但需要帮助。


我想从中获取数据的节点是 "DiskDriveInfo" ,我也不确定如何处理下一个节点 "ResultCode i:nil="true" "


我的代码:


var xml = XDocument.Parse(InXML);

var r = from x in xml.Elements("DiskDriveInfo")

                select new

                {

                    ResultCode = x.Element("ResultCode").Value,

                    ResultCodeDescription = 

                          x.Element("ResultCodeDescription").Value,

                    AirbagDetails = x.Element("AirbagDetails").Value,

                    ..

                    ..

                    WheelBase        = x.Element("WheelBase").Value              

};

输入是:


<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope">

  <s:Body>

    <GetConvergedDataRequestResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://autoinsight.trn.co.za/types">

      <ConvergedData xmlns:d4p1="http://schemas.datacontract.orgB2B.BusinessModels" i:type="ConvergedResults">

        <AccidentHistory i:nil="true" />

        <AlertInfo i:nil="true" />

        <CloneInfo i:nil="true" />

        <DiskDriveInfo>

          <ResultCode i:nil="true" />

          <ResultCodeDescription i:nil="true" />

          <AirbagDetails>DRIVER, PASSENGER</AirbagDetails>

...

...

<WheelBase>2460</WheelBase>

    </DiskDriveInfo>

谢谢


喵喵时光机
浏览 174回答 2
2回答

千巷猫影

您可以从下面的代码中编写,只需要根据您的 xml 文件创建类,下面是将 xml 直接转换为类对象的函数&nbsp; &nbsp; public T DeserializeData(string dataXML)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;XmlDocument xDoc = new XmlDocument();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;xDoc.LoadXml(dataXML);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;XmlNodeReader xNodeReader = new XmlNodeReader(xDoc.DocumentElement);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;var modelData = xmlSerializer.Deserialize(xNodeReader);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;T deserializedModel = (T)modelData ;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return deserializedModel;&nbsp; &nbsp; }
打开App,查看更多内容
随时随地看视频慕课网APP