특성

2013-03-15 2 views
1
나는 다음과 같은 XML이

에 의해 요소 필터링을 가져 오기 :특성

<?xml version="1.0" encoding="utf-8"?> 
<assertions> 
    <assertion id="SLM_CekNonNegative"> 
     <satisfied count="36"/> 
     <unsatisfied count="4"> 
      <message xml:lang="id">(Record ID = ID_2) SLM: Jumlah bulan lalu, jumlah bulan laporan, jumlah hari tunggakan, dan jumlah tunggakan pokok tidak boleh kosong dan harus diisi >= 0</message> 
      <message xml:lang="id">(Record ID = ID_2) SLM: Jumlah bulan lalu, jumlah bulan laporan, jumlah hari tunggakan, dan jumlah tunggakan pokok tidak boleh kosong dan harus diisi >= 0</message> 
      <message xml:lang="id">(Record ID = ID_2) SLM: Jumlah bulan lalu, jumlah bulan laporan, jumlah hari tunggakan, dan jumlah tunggakan pokok tidak boleh kosong dan harus diisi >= 0</message> 
      <message xml:lang="id">(Record ID = ID_2) SLM: Jumlah bulan lalu, jumlah bulan laporan, jumlah hari tunggakan, dan jumlah tunggakan pokok tidak boleh kosong dan harus diisi >= 0</message> 
     </unsatisfied> 
    </assertion> 
    <assertion id="Base_CekJangkaWaktuMulaiLebihMudaJatuhTempo"> 
     <satisfied count="10"/> 
     <unsatisfied count="0"/> 
    </assertion> 
    <assertion id="SLM_CekJumlahBulanKrgDrNilaiKontrak"> 
     <satisfied count="10"/> 
     <unsatisfied count="0"/> 
    </assertion> 
    <assertion id="Base_CekTanggalLebihMudaTanggalPelaporan"> 
     <satisfied count="10"/> 
     <unsatisfied count="0"/> 
    </assertion> 
    <assertion id="SLM_CekNilaiKontrak"> 
     <satisfied count="2"/> 
     <unsatisfied count="8"> 
      <message xml:lang="id">(Record ID = ID_10) Nilai kontrak harus > 0</message> 
      <message xml:lang="id">(Record ID = ID_9) Nilai kontrak harus > 0</message> 
      <message xml:lang="id">(Record ID = ID_8) Nilai kontrak harus > 0</message> 
      <message xml:lang="id">(Record ID = ID_7) Nilai kontrak harus > 0</message> 
      <message xml:lang="id">(Record ID = ID_6) Nilai kontrak harus > 0</message> 
      <message xml:lang="id">(Record ID = ID_5) Nilai kontrak harus > 0</message> 
      <message xml:lang="id">(Record ID = ID_2) Nilai kontrak harus > 0</message> 
      <message xml:lang="id">(Record ID = ID_1) Nilai kontrak harus > 0</message> 
     </unsatisfied> 
    </assertion> 
    <assertion id="SLM_CekGolNasabah"> 
     <satisfied count="9"/> 
     <unsatisfied count="1"> 
      <message xml:lang="id">(Record ID = ID_2) Golongan nasabah tidak boleh diisi sandi bank pelapor sendiri</message> 
     </unsatisfied> 
    </assertion> 
    <assertion id="BS-IF_CekSLMVls"> 
     <satisfied count="1"/> 
     <unsatisfied count="0"/> 
    </assertion> 
    <assertion id="BS-IF_CekSLMIDR"> 
     <satisfied count="1"/> 
     <unsatisfied count="0"/> 
    </assertion> 
    <assertion id="Base_CekHubunganTidakTerkaitStatusLainnya"> 
     <satisfied count="8"/> 
     <unsatisfied count="2"> 
      <message xml:lang="id">(Record ID = ID_3) Base: "Status hubungan dengan Bank" harus terisi sandi 9 jika Kolom "Klasifikasi Nasabah - Hubungan dengan bank" terisi sandi 2</message> 
      <message xml:lang="id">(Record ID = ID_2) Base: "Status hubungan dengan Bank" harus terisi sandi 9 jika Kolom "Klasifikasi Nasabah - Hubungan dengan bank" terisi sandi 2</message> 
     </unsatisfied> 
    </assertion> 
    <assertion id="Base_CekLembagaNilaiPemeringkat"> 
     <satisfied count="0"/> 
     <unsatisfied count="0"/> 
    </assertion> 
    <assertion id="Base_CekNeracaMinNol"> 
     <satisfied count="0"/> 
     <unsatisfied count="0"/> 
    </assertion> 
    <assertion id="Base_CekNilaiAgunanMinNol"> 
     <satisfied count="0"/> 
     <unsatisfied count="0"/> 
    </assertion> 
    <assertion id="Base_CekPersentaseMaksimal100"> 
     <satisfied count="0"/> 
     <unsatisfied count="0"/> 
    </assertion> 
    <assertion id="Base_CekLembaga-Tanggal-NilaiPeringkat"> 
     <satisfied count="0"/> 
     <unsatisfied count="0"/> 
    </assertion> 
    <assertion id="Base_CekIdentifier"> 
     <satisfied count="1"/> 
     <unsatisfied count="0"/> 
    </assertion> 
    <assertion id="Base_CekNomor-JumlahAgunan"> 
     <satisfied count="0"/> 
     <unsatisfied count="0"/> 
    </assertion> 
    <assertion id="Base_CekEligibilityJenisAgunan"> 
     <satisfied count="0"/> 
     <unsatisfied count="0"/> 
    </assertion> 
    <assertion id="Base_CekSifat-GolonganPenerbitAgunan"> 
     <satisfied count="0"/> 
     <unsatisfied count="0"/> 
    </assertion> 
    <assertion id="Base_cekPeriod"> 
     <satisfied count="1"/> 
     <unsatisfied count="0"/> 
    </assertion> 
</assertions> 

가 어떻게 SLM_CekNonNegative입니다 <assertion id="SLM_CekNonNegative">의 값을 얻을 수 있습니까?

string pathasr = @"D:\HARPITNAS\dari mbak julia\logs\123456789-2012-09-30-BSMS10.xml-assertions2.xml"; 
List<string> msg = new List<string>(); 
XmlDocument doc = new XmlDocument(); 
doc.Load(pathasr); 

foreach (XmlNode node in doc.DocumentElement) 
{ 
    string thevaluethatiwantvariable = string.Empty; 
    thevaluethatiwantvariable = ? ; 

    if (node.LastChild.HasChildNodes == true) 
    { 
      string count = node.LastChild.ChildNodes.Count.ToString(); 
      foreach (XmlNode y in node.LastChild.ChildNodes) 
      { 
       string masg = y.InnerXml; 
       msg.Add(masg); 
      } 
    } 
} 

가이 코드는 내가 원하는 가치를 얻을하지 않습니다 아래

내가 지금까지 가지고있는 코드입니다. 디버깅 할 때 올바른 값을 얻지 못한다는 것을 알 수 있습니다. 원하는 가치를 얻을 수 있습니까? 더 많은 정보를 들어

답변

4
thevaluethatiwantvariable = doc.DocumentElement.SelectSingleNode("//assertion[@name = 'id']/@value").Value; 

:

string theValue = doc.DocumentElement["assertion"].Attributes["id"].Value; 

을 그리고 루프의 모든 종류의 필요가 없습니다 : XPath를하지 않고 http://www.w3schools.com/xpath/xpath_syntax.asp

+0

이미 해결책을 따르고 있지만 'object refrence is null'오류가 발생했습니다. – Sabilv

+0

해당 _SINGLE_ 노드가 없으면 문제가 발생합니다. 실제로 가지고있는 것을 반영하도록 예제 데이터를 수정하십시오. – BlackICE

+0

나는 이미 샘플 XML을 수정했다. 당신의 사전을 위해서 쓰여졌다. – Sabilv

2

는이 같은 것입니다.

+0

요소가 하나뿐이기 때문에 foreach 루프가 필요하다. 그들 중 일부는, 귀하의 코드를 사용하는 경우에만 첫 번째 요소 값을 줄 ...? – Sabilv

+1

@SabilValdano 그러면 예제가 불완전합니다. XPath 솔루션은 한 줄만 제공합니다. 우리에게 완전한 모범을 보냅니다. – Dialecticus

+0

나는 이미 XML 샘플을 수정했다 ... – Sabilv