2012-06-20 18 views
5

Xin chào Tôi hiện đang gặp sự cố khi phân tích chuỗi Xml mà không có bất kỳ không gian tên nào và được thêm vào XElement hiện có với không gian tên.Đặt không gian tên trong khi phân tích

mã của tôi:

XElement elem = root.Element(xs + "methodCall"); 
if (elem != null) 
{ 
    XElement e = XElement.Parse(this.MethodCallXML); 

    elem.Add(e); 
} 

kết quả:

<methodCall> 
    <methodCall service="activity" method="activityDeleteComment" xmlns=""> 
    <espSessionState>espSessionState1</espSessionState> 
    <traceFlowCode>true</traceFlowCode> 
    <params> 
     <commentID>http://uri1</commentID> 
     <isPermanentDelete>false</isPermanentDelete> 
    </params> 
    </methodCall> 
</methodCall> 

vấn đề của tôi là xmlns = "" Tôi không thể tìm ra cách để tạo ra các nút bằng cách sử dụng phương pháp phân tích và cung cấp cho nó một mặc định không gian tên để sử dụng.

Có cách nào để thực hiện việc này không?

Trả lời

8

Ok tôi đã tìm ra cách để thêm không gian tên cho XElement mới và tất cả con cháu

foreach (XElement ce in e.DescendantsAndSelf()) 
    ce.Name = xs + ce.Name.LocalName; 

Cho đến nay điều này giải quyết vấn đề của tôi, nhưng nếu có ai có thể nhìn thấy một lỗ hổng tiềm năng hoặc một cách dễ dàng hơn để làm điều này xin vui lòng cho tôi biết.