0

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>
4

1 に答える 1

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();
于 2012-05-20T16:54:36.793 に答える