2009-09-12 6 views
19

Cách thêm chuỗi Xml hiện có vào XElement?Cách thêm chuỗi Xml hiện có vào XElement

Mã này

 var doc = new XDocument(
      new XElement("results", "<result>...</result>") 
     ); 

tất nhiên sản xuất này

<results>&lt;result&gt;&lt;/result&gt;</results> 

nhưng tôi cần điều này

<results><result>...</result></results> 

Bất kỳ ý tưởng?

Trả lời

29

này nên làm việc:

var xmlString = "<result>sometext</result>"; 
var xDoc = new XDocument(new XElement("results", XElement.Parse(xmlString))); 
+0

Tuyệt vời! Tôi không nhìn vào các phương pháp lớp học. Cảm ơn nhiều! –

1

Xem câu trả lời của tôi trên Is there an XElement equivalent to XmlWriter.WriteRaw?

Về cơ bản, thay thế một giữ chỗ cho nội dung chỉ nếu bạn biết nó đã có giá trị XML.

var d = new XElement(root, XML_PLACEHOLDER); 
var s = d.ToString().Replace(XML_PLACEHOLDER, child); 

Phương pháp này cũng có thể nhanh hơn phân tích cú pháp với XElement.Parse.

2

Câu trả lời của Sani Singh Huttunen đưa tôi đi đúng hướng, nhưng nó chỉ cho phép một phần tử kết quả trong các yếu tố .

var xmlString = "<result>sometext</result><result>alsotext</result>"; 

không thành công với các System.Xml.XmlException

Có nhiều yếu tố gốc.

tôi giải quyết này bằng cách di chuyển kết quả yếu tố để các chuỗi chữ

var xmlString = "<results><result>sometext</result><result>alsotext</result></results>"; 

để nó chỉ có một phần tử gốc và sau đó thêm vào chuỗi phân tích trực tiếp đến các yếu tố phụ huynh, như thế này:

parent.Add(XElement.Parse(xmlString));