2013-07-22 9 views
21

मैं एक XElement है कि इस तरह दिखता है:मिल XElement विशेषता मान

<User ID="11" Name="Juan Diaz" LoginName="DN1\jdiaz" xmlns="http://schemas.microsoft.com/sharepoint/soap/directory/" /> 

मैं एक्सएमएल कैसे उपयोग कर सकते हैं LOGINNAME का अधिक महत्व देते हैं निकालने के लिए? मैंने निम्नलिखित की कोशिश की, लेकिन q2 "गणना ने कोई परिणाम नहीं दिया"।

var q2 = from node in el.Descendants("User") 
    let loginName = node.Attribute(ns + "LoginName") 
    select new { LoginName = (loginName != null) }; 
foreach (var node in q2) 
{ 
    Console.WriteLine("LoginName={0}", node.LoginName); 
} 

उत्तर

26
var xml = @"<User ID=""11"" 
        Name=""Juan Diaz"" 
        LoginName=""DN1\jdiaz"" 
        xmlns=""http://schemas.microsoft.com/sharepoint/soap/directory/"" />"; 

var user = XElement.Parse(xml); 
var login = user.Attribute("LoginName").Value; // "DN1\jdiaz" 
+0

ध्यान दें कि XAttribute शून्य हो सकता है (यहां हाँ नहीं), इसलिए मान प्राप्त करने से पहले शून्य की जांच करना चाह सकता है। – user420667

0

मैं मुझे लगता है कि कोड पोस्ट करेंगे, लेकिन मैं अभी भी एक एक्सएमएल दृष्टिकोण को देखने के लिए अगर वहाँ एक है चाहते हैं स्ट्रिंग परिवर्तन का उपयोग कर मूल्य प्राप्त करने के समाप्त हो गया है, इसलिए।

string strEl = el.ToString(); 
string[] words = strEl.Split(' '); 
foreach (string word in words) 
{ 
    if (word.StartsWith("LoginName")) 
    { 
     strEl = word; 
     int first = strEl.IndexOf("\""); 
     int last = strEl.LastIndexOf("\""); 
     string str2 = strEl.Substring(first + 1, last - first - 1); 
     //str2 = "dn1\jdiaz" 
    } 
} 
+4

एक्सएमएल पर स्ट्रिंग मैनिपुलेशन न करें। एक्सएमएल सामान्य रूप से सरल लगता है लेकिन यह नहीं है। तो, इसे पार्स करने के लिए माइक्रोसॉफ्ट द्वारा प्रदान किए गए टूल्स का उपयोग करें। –

4
XmlDocument doc = new XmlDocument(); 
doc.Load("myFile.xml"); //load your xml file 
XmlNode user = doc.getElementByTagName("User"); //find node by tag name 
string login = user.Attributes["LoginName"] != null ? user.Attributes["LoginName"].Value : "unknown login"; 

कोड की अंतिम पंक्ति है, जहां यह string login सेट करते हैं, प्रारूप इस तरह दिखता है ...

var variable = condition ? A : B; 

यह मूल रूप से कह रहा है कि अगर हालत true, चर रहा है ए के बराबर है, अन्यथा परिवर्तनीय बी

+0

अंतिम स्ट्रिंग होना चाहिए: 'स्ट्रिंग लॉगिन = उपयोगकर्ता। गुण? [" लॉगिन नाम "] ?? "अज्ञात लॉगिन"; ' –

2

XAttribute के लिए दस्तावेज़ों से बराबर है। वैल्यू:

आप मूल्य मिल रहा है और विशेषता मौजूद नहीं हो सकता है, यह स्पष्ट रूपांतरण ऑपरेटरों का उपयोग करने के लिए, और एक नल प्रकार जैसे string या Int32 की Nullable<T> को विशेषता आवंटित अधिक सुविधाजनक है। यदि विशेषता मौजूद नहीं है, तो शून्य प्रकार को शून्य पर सेट किया गया है।

+0

और संदर्भित दस्तावेज [लिंक] में दूसरा उदाहरण (https://msdn.microsoft.com/en-us/library/system.xml.linq.xattribute.value (v = vs.110) .aspx) रूपांतरण ऑपरेटरों के उपयोग को दर्शाता है। –

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