使用 linq2xml 阅读自定义标记
本文关键字:自定义 linq2xml 使用 | 更新日期: 2023-09-27 18:34:40
如何使用linq2xml读取标签?
var q = (from c in xDocument.Descendants("colecciones").Descendants("BoTblPacientes")
select c).ToList();
但不要工作。
<?xml version="1.0" ?>
<DalClassObject xmlns="http://www.asd.com">
<objeto class="BoTblPacientes"></objeto>
<validador>true</validador>
<mensaje>El paciente existe en el sistema .</mensaje>
<colecciones>
<BoTblPacientes>
<tblpacientesmotivoconsulta>5</tblpacientesmotivoconsulta>
<tblpacientestlfcasa>5</tblpacientestlfcasa>
<tblpacientescelular>5</tblpacientescelular>
<tblpacientesoficina>5</tblpacientesoficina>
<tblpacientescorreo>5</tblpacientescorreo>
<tblpacientesdireccion>5</tblpacientesdireccion>
<tblpacientesapellidos>5</tblpacientesapellidos>
<tblpacientesdocumento>5</tblpacientesdocumento>
<tblpacientessexoid>0</tblpacientessexoid>
<tblpacientesfechanacimiento class="sql-date">2012-05-13</tblpacientesfechanacimiento>
<tblpacientesnombres>5</tblpacientesnombres>
<tblpacientesid>2</tblpacientesid>
<tblpacientesestadocivil>0</tblpacientesestadocivil>
<tblpacientesfecharegistro class="sql-date">2012-05-13</tblpacientesfecharegistro>
<tblpacienteidmaster>0</tblpacienteidmaster>
</BoTblPacientes>
<BoTblPacientes>
<tblpacientesmotivoconsulta>23232</tblpacientesmotivoconsulta>
<tblpacientestlfcasa>2332</tblpacientestlfcasa>
<tblpacientescelular>23</tblpacientescelular>
<tblpacientesoficina>23</tblpacientesoficina>
<tblpacientescorreo>23</tblpacientescorreo>
<tblpacientesdireccion>2323</tblpacientesdireccion>
<tblpacientesapellidos>ewr</tblpacientesapellidos>
<tblpacientesdocumento>5</tblpacientesdocumento>
<tblpacientessexoid>0</tblpacientessexoid>
<tblpacientesfechanacimiento class="sql-date">2012-03-29</tblpacientesfechanacimiento>
<tblpacientesnombres>wer</tblpacientesnombres>
<tblpacientesid>3</tblpacientesid>
<tblpacientesestadocivil>0</tblpacientesestadocivil>
<tblpacientesfecharegistro class="sql-date">2012-05-13</tblpacientesfecharegistro>
<tblpacienteidmaster>0</tblpacienteidmaster>
</BoTblPacientes>
</colecciones>
</DalClassObject>
您最初的"但不起作用"语句不是很有帮助,因为您并没有真正澄清什么不起作用,但是从我看到的错误来看,我会猜测您的查询没有选择任何东西。
您的 xml 根元素声明了一个命名空间,但您没有在查询中指定该命名空间,因此没有任何内容与您在 Descendants()
方法中提供的字符串匹配。
您需要改为按本地名称查找
var q = (from c in xDocument.Descendants()
where c.Name.LocalName == "BoTblPacientes"
select c).ToList()
为了完整起见,正如 OP 在注释中提到的,另一种选择是将命名空间添加到查询中:
XNamespace ns = "http://www.asd.com";
var q = (from c in xDocument.Descendants(ns + "colecciones")
select c).ToList();