2013-08-15 24 views
10

Ciao sto cercando di ottenere valore da xml ma mostra nodo null.Come leggere il valore del singolo nodo dal file xml

Ecco il mio file xml.

<?xml version="1.0" encoding="utf-8"?> 
<result xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://www.cfhdocmail.com/TestAPI2/Result.xsd https://www.cfhdocmail.com/TestAPI2/Result.xsd" xmlns="https://www.cfhdocmail.com/TestAPI2/Result.xsd"> 
    <data> 
    <key>MailingGUID</key> 
    <value>0aa2b2e3-7afa-4002-ab2f-9eb4cbe33ae7</value> 
    </data> 
    <data> 
    <key>OrderRef</key> 
    <value>52186</value> 
    </data> 
</result> 

voglio ottenere valore "MailingGUID".

Ecco il codice che ho provato:

private void readXML() 
    { 
     XmlDocument xml = new XmlDocument(); 
     // You'll need to put the correct path to your xml file here 
     xml.Load(Server.MapPath("~/XmlFile11.xml")); 

     // Select a specific node 
     XmlNode node = xml.SelectSingleNode("result/data/value"); 
     // Get its value 
     string name = node.InnerText; 


    } 

prego di dirmi come posso ottenere MailingGUID valore.

Grazie

+0

Sei sulla strada giusta, il problema è con la query XPath. Dai un'occhiata qui: [Link] (http://www.w3schools.com/xpath/) – Artless

risposta

9

UPDATE: Penso che ci potrebbe essere qualcosa di sbagliato con i vostri schemi, ho rimosso i riferimenti a loro e il codice ha funzionato bene. Ho provato questo:

const string str = "<?xml version=\"1.0\" encoding=\"utf-8\"?><result><data><key>MailingGUID</key><value>0aa2b2e3-7afa-4002-ab2f-9eb4cbe33ae7</value></data><data><key>OrderRef</key><value>52186</value></data></result>"; 
var xml = new XmlDocument(); 
xml.LoadXml(str); 
xml.DocumentElement.SelectSingleNode("/result/data/value").InnerText 
+1

XmlNode node = xml.DocumentElement.SelectSingleNode ("/ result/data"); // Ottieni il suo valore string name = node.InnerText; questo mi dà errore di refrence dell'oggetto .. – deepika

+0

Vedere il mio aggiornamento .. – Marcus

+0

perché sto diventando nullo. ecco il codice: private void readXML() { XmlDocument xml = new XmlDocument(); xml.Load (Server.MapPath ("~/XMLFile1.xml")); var node = xml.DocumentElement.SelectSingleNode ("/ result/data"); var s = nodo ["valore"]. InnerText; } – deepika

-1
xml.LoadXml(sResponse); 
XmlNodeList Nnodes = xml.SelectNodes("/api_result/entries_success"); 

foreach (XmlNode Nnode in Nnodes) 
{ 
    string entries_success = Nnode["numto"].InnerText; 
    LabelES.Text += entries_success + ","; 
} 
+0

Qualche spiegazione del codice sarebbe carina. – Raidri

+0

(sResponse) sta caricando il mio percorso url contenente i tag xml – thepen

+0

nel nodo esiste lo e ho passato il numto in un'etichetta denominata LabelES. – thepen

0
import javax.xml.parsers.DocumentBuilder; 
import javax.xml.parsers.DocumentBuilderFactory; 
import org.w3c.dom.Document; 
import org.w3c.dom.Element; 
import org.w3c.dom.Node; 
import org.w3c.dom.NodeList; 


DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
      DocumentBuilder builder = factory.newDocumentBuilder();     

     //Parsing of xml is done here 
     Document doc = builder.parse(new File("C:\\Users\\User_Name\\Documents\\My Received Files\\PDSL_ABM.xml")); 

     //Here we get the root element of XML and print out 
     doc.getDocumentElement().normalize(); 
     System.out.println ("Root element of the doc is " + doc.getDocumentElement().getNodeName()); 

     NodeList list = doc.getElementsByTagName("MailingGUID"); 
     int totalMailingGUID =list.getLength(); 
     System.out.println("Total no of MailingGUID : " + totalSupplierPartID); 



     //Traversing all the elements from the list and printing out its data 
     for (int i = 0; i < list.getLength(); i++) { 

     //Getting one node from the list. 
     Node childNode = list.item(i); 
     System.out.println("MailingGUID : " + childNode.getTextContent()); 
     } 
Problemi correlati