2016-08-01 10 views
-2

ich einen Code wie dieses Wie xml Knotenwert acces wenn es hat ‚<‘ in es

haben
var summary = member.Select(o => o.Element("summary")) 
       .FirstOrDefault(); 

Dieser Wert wie

<summary> 
    Gets the number of elements contained in the <see cref="T:System.Collections.Generic.ICollection`1" />. 
</summary> 

gibt Wenn ich versuche, den Wert zu erhalten aus Zusammenfassung wie summary.value gibt es nur den Wert

Ruft die Anzahl der Elemente in der.

Der Teil <see cref="T:System.Collections.Generic.ICollection 1" /> `in diesem String kommt nicht.

Bitte helfen Sie dies bei der Festsetzung.

auf Debuggen Eingefangen.

Capture on debugging for reference

Summary value

UPDATE

Ich habe versucht, per Kommentar zu entkommen

 var summary = member.Select(o => o.XPathSelectElement("summary").Value.Replace("&lt;", "<").Replace("&amp;", "&").Replace("&gt;", ">")) 
      .FirstOrDefault(); 

Noch gleiches Ergebnis. Vielleicht mache ich etwas falsch.

+3

Sie sollen den Wert zuvor mit '' < für '<' und '' > für '>' und '' & für '&' – Icepickle

+0

entkommen, wie ich diese Frage verbessern. Down-Wähler bitte vorschlagen. – shanmugharaj

+0

Sie könnten angeben, wie Ihr XML erstellt wird, und ob der XML-Inhalt bereits maskiert ist (Sie könnten prüfen, ob anstelle des XML-Viewers notepad vorhanden ist, wenn die fragliche Datei das fehlerhafte XML hat (zB: < Icepickle

Antwort

1

Per dieser link habe ich eine XmlReader Objekt und lesen Sie den Inhalt und erhalten Sie die innere Xml. Der Code ist:

public static string InnerXml(this XElement self) 
{ 
    var reader = self.CreateReader(); 
    reader.MoveToContent(); 

    return reader.ReadInnerXml()?.Trim(); 
} 
2

Der Grund, warum Sie es so erhalten, ist, weil die XDocument es als ein verschachteltes Element erkennt. Sie sollten dieses Element in einfachen Text konvertieren und dann haben Sie es.

Etwas wie:

var element = document.Element("summary"); 
var value = element.Value; 

value += string.Join(", ", document.Element("summary") 
            .Descendants() 
            .Where(x => x.NodeType == System.Xml.XmlNodeType.Element 
            .Select(x => x.ToString())); 

Natürlich kann man nicht .Descendants() verwenden und .Element() oder fügen Sie .FirstOrDefault() stattdessen mit der Sammlung von Arbeiten, aber das ist die allgemeine Idee

+0

Danke für die Antwort. – shanmugharaj

+0

@shansfk - hat es gelöst? :) –

+0

Ich habe [this link] (http://stackoverflow.com/questions/3793/best-way-to-get-innerxml-of-an-xelement) vorgeschlagen von har07.Das funktionierte für mich – shanmugharaj