2011-06-22 12 views
20

से निर्दिष्ट नोड मान प्राप्त करना मुझे एक XML दस्तावेज़ (सी # के साथ) में जाने में समस्या है और सभी आवश्यक मान प्राप्त करें। मैं XML दस्तावेज़ में सभी निर्दिष्ट XmlNodeLists से सफलतापूर्वक जाता हूं, सफलतापूर्वक सभी XmlNode मानों को अंदर प्राप्त करता हूं, लेकिन मुझे इस XmlNodeList के बाहर कुछ मान प्राप्त करना होगा। हर मेंएक्सएमएल दस्तावेज़

<?xml version="1.0" encoding="UTF-8" ?> 
<Element xsi:schemaLocation="http://localhost/AML/CaseInvestigationMangement/Moduli/XmlImportControls/xsdBorrow.xsd xsd2009027_kor21.xsd" Kod="370" xmlns="http://localhost/AML/CaseInvestigationMangement/Moduli/XmlImportControls/xsdBorrow.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
/2001/XMLSchema-instance"> 
    <ANode> 
     <BNode> 
      <CNode> 
       <Example> 
        <Name>John</Name> 
        <NO>001</NO> 
       </Example> 
      </CNode> 
     </BNode> 
     <ID>1234</ID> 
     <Date>2011-10-01</Date> 
    </ANode> 
    <ANode> 
     <BNode> 
      <CNode> 
       <Example> 
        <Name>Mike</Name> 
        <NO>002</NO> 
       </Example> 
      </CNode> 
     </BNode> 
     <ID>5678</ID> 
     <Date>2011-03-31</Date> 
    </ANode> 
</Element> 

इस कोड है कि नोड्स नाम के लिए मान हो जाता है और कोई XML दस्तावेज में एनोड पाया:

उदाहरण के लिए

XmlDocument xml = new XmlDocument(); 
xml.LoadXml(myXmlString); //myXmlString is the xml file in string //copying xml to string: string myXmlString = xmldoc.OuterXml.ToString(); 
XmlNodeList xnList = xml.SelectNodes("/Element[@*]/ANode/BNode/CNode"); 
foreach (XmlNode xn in xnList) 
{ 
    XmlNode example = xn.SelectSingleNode("Example"); 
    if (example != null) 
    { 
     string na = example["Name"].InnerText; 
     string no = example["NO"].InnerText; 
    } 
} 

अब मैं एक समस्या के लिए मान हो रही है आईडी और तिथि।

उत्तर

24

वैसे ही जैसे आप से कुछ प्राप्त करने के लिए करते हैं CNode आप भी ANode

XmlNodeList xnList = xml.SelectNodes("/Element[@*]"); 
foreach (XmlNode xn in xnList) 
{ 
    XmlNode anode = xn.SelectSingleNode("ANode"); 
    if (anode!= null) 
    { 
     string id = anode["ID"].InnerText; 
     string date = anode["Date"].InnerText; 
     XmlNodeList CNodes = xn.SelectNodes("ANode/BNode/CNode"); 
     foreach (XmlNode node in CNodes) 
     { 
     XmlNode example = node.SelectSingleNode("Example"); 
     if (example != null) 
     { 
      string na = example["Name"].InnerText; 
      string no = example["NO"].InnerText; 
     } 
     } 
    } 
} 
+0

मैं इस कोशिश की के लिए क्या करने की जरूरत है, लेकिन मैं किसी भी मूल्य नहीं मिलता है। "एनोड" शून्य है और लाइन में कूद गया: "अगर (एनोड! = शून्य)"। –

+0

ने पहली पंक्ति से ** एनोड ** को हटाने का भी प्रयास किया। पहली पंक्ति 'XmlNodeList xnList = xml.SelectNodes ("/ Element [@ *]") होनी चाहिए; '। इस मामले में मुझे ** आईडी ** और ** दिनांक ** के लिए मूल्य मिल गए, लेकिन मुझे लाइन 'foreach (सीएनओडी में एक्सएमएलएनोड नोड) में कूद गया। –

+0

इसे अभी आज़माएं। संपादित संस्करण काम करना चाहिए। – msarchet

संबंधित मुद्दे