如何使用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>
答案 0 :(得分:1)
您最初的“但不起作用”声明并不是很有帮助,因为您并没有真正澄清什么不起作用,但是从我看到的错误中,我猜测您的查询没有选择任何内容
您的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();