2010-06-19 34 views

Trả lời

24

Các câu trả lời khác sẽ hoạt động nếu phần tử chỉ chứa các phần tử khác. Nếu bạn muốn bao gồm văn bản là tốt, bạn sẽ muốn sử dụng nút() thay vì Elements():

var result = string.Concat(element.Nodes()); 
+0

Tôi vừa thử nghiệm cái này, nó hoạt động hoàn hảo. Đây là câu hỏi đầu tiên của tôi về Stack Overflow, tôi chắc chắn ấn tượng bởi tôi đã nhận được câu trả lời nhanh như thế nào. :) – Michael

+0

Làm việc như một sự quyến rũ !!! –

3

Lớp XElement không cung cấp phương thức trực tiếp lấy "XML bên trong" của phần tử.
Bạn có thể ghép các phần tử con bằng tay tuy nhiên, ví dụ như sử dụng

string result = string.Concat(element.Elements()); 

hoặc

string result = string.Join(Environment.NewLine, element.Elements()); 
0

foreach (var yếu tố trong Element.Elements()) { yield return element.ToString(); }

Trả lại một IEnumerable bằng chuỗi.

1

Xem nhiều tùy chọn, với hiệu suất thử nghiệm ở đây: Best way to get InnerXml of an XElement?

Bạn có thể muốn để tạo ra một phương pháp mở rộng cho rung động của bạn như vậy:

/// <summary> 
/// Gets the inner XML of an <see cref="XElement"/>. Copied from 
/// https://stackoverflow.com/questions/3793/best-way-to-get-innerxml-of-an-xelement 
/// </summary> 
/// <param name="element">The element.</param> 
/// <returns>The inner XML</returns> 
public static string GetInnerXml(this XElement element) 
{ 
    var reader = element.CreateReader(); 
    reader.MoveToContent(); 
    return reader.ReadInnerXml(); 
} 
0

đối với tôi nó hoạt động như thế này, nhờ Quartermeister

string result = string.Concat(instanceXElement.Nodes().ToArray()); 

Tôi đã chỉ có mã HTML trong instanceXElement của mình mà tôi muốn tìm nạp chính xác.

Các vấn đề liên quan