2012-06-20 4 views
5

Привет, У меня возникла проблема с разбором строки Xml без какого-либо пространства имен и добавлена ​​в существующий XElement с пространством имен.Установка пространства имен во время разбора

мой код:

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

    elem.Add(e); 
} 

результат:

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

моя проблема заключается в Xmlns = «» Я не могу понять, как создать узел с помощью метода синтаксического анализа и дать ему по умолчанию используемое пространство имен.

Есть ли способ сделать это?

ответ

8

Хорошо, я понял, как добавить пространство имен к новому XElement и все потомки

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

До сих пор это решает мою проблему, но если кто-то может увидеть потенциальный недостаток или более легкий способ сделать это, пожалуйста, дайте я знаю.

Смежные вопросы