2012-10-15 10 views
8

से टेक्स्ट सामग्री पढ़ें .NET में, मैं XElement से टेक्स्ट सामग्री कैसे पढ़ूं?XElement

उदाहरण के लिए

,

XElement.Parse("<tag>Alice &amp; Bob<other>cat</other></tag>") 

XElement से मैं स्ट्रिंग चाहते हैं ऐलिस & बॉब '


मैंने कोशिश की element.Value लेकिन यह है कि रिटर्न' ऐलिस & बनबिलाव ':(

+0

मुझे पूरा यकीन है कि बुरी तरह से एक्सएमएल बनाया गया है, यही कारण है कि आपको कोई समस्या है। टैग में या तो एक मान या अन्य टैग होना चाहिए, दोनों नहीं। – Bobson

+2

'

एचटीएमएल

' –

+1

असल में, एचटीएमएल एक्सएमएल नहीं है और इसके विपरीत, उस लोकप्रिय एक्सएमएल भाषा के लिए पूरी तरह सामान्य है। वे निश्चित रूप से संबंधित हैं, लेकिन केवल एक्सएचटीएमएल दोनों ही हैं। http://en.wikipedia.org/wiki/XHTML। यदि आप HTML को पार्स करने जा रहे हैं, तो आपको एक HTML पार्सर का उपयोग करना चाहिए। यदि आप एक्सएमएल पार्स कर रहे हैं, तो मुझे अभी भी लगता है कि यह बुरी तरह गठित है। – Bobson

उत्तर

9
XElement t = XElement.Parse("<tag>Alice &amp; Bob<other>cat</other></tag>"); 
string s = (t.FirstNode as XText).Value; 
0

element.FirstNode का उपयोग करके आप तत्व के अंदर कच्ची सामग्री प्राप्त कर सकते हैं, "ऐलिस & बॉब ", तो आपको केवल एम्पर्सेंड" अनदेस्केप "की आवश्यकता है और आपको वह परिणाम मिलेगा जिसकी आप उम्मीद कर रहे हैं।

1

कोशिश निम्नलिखित कोड यह आपकी मदद कर सकते ..

namespace ConsoleApplication6 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      var parent = XElement.Parse("<tag>Alice &amp; Bob<other>cat</other></tag>"); 
      var nodes = from x in parent.Nodes() 
          where x.NodeType == XmlNodeType.Text 
          select (XText)x; 

      foreach (var val in nodes) 
      { 
       Console.WriteLine(val.Value); 
      } 
      Console.ReadLine(); 
     } 
    } 
} 
0
XElement t= XElement.Parse("<tag>Alice &amp; Bob<other>cat</other></tag>"); 
string s = t.FirstNode.ToString(); 
+1

एलिस & बॉब – MMK

+0

इस स्ट्रिंग एस = सिस्टम.Web.HttpUtility.HtmlDecode ((string.Format (t.FirstNode.ToString()) का उपयोग करने का प्रयास करें)); सुनिश्चित करें कि सिस्टम। वेब डीएल संदर्भित किया जा रहा है। – MMK

+0

आप इसे स्ट्रिंग एस = System.Net.WebUtility.HtmlDecode ((string.Format (t.FirstNode.ToString())) का भी उपयोग कर सकते हैं);); – MMK

2

सिर्फ इसलिए कि मैं हाल ही में एक ऐसी ही आवश्यकता थी, मैं ऊपर की पेशकश कर रहा हूँ:

var x = XElement.Parse("<tag>Alice &amp; Bob<other>cat</other></tag>") 
var text = string.Concat(x.Nodes().OfType<XText>().Select(t => t.Value)); 

नहीं होगा बाल नोड्स की टेक्स्ट सामग्री को कैप्चर करें, लेकिन वर्तमान तत्व में सभी अनगिनत टेक्स्ट नोड्स को संयोजित करेंगे।

+0

यह सबसे लचीला \ सामान्य और इसलिए उपयोगी उत्तर है। – mutex

+0

यह लेकिन बिना संगत के महान है। कंसट सिर्फ तारों को मर्ज करेगा और नतीजा अस्पष्ट करेगा। – user420667

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