在解析期间设置命名空间
Posted
技术标签:
【中文标题】在解析期间设置命名空间【英文标题】:Setting the namespace during a parse 【发布时间】:2012-06-22 14:56:19 【问题描述】:您好,我目前在解析没有任何命名空间的 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="" 我无法弄清楚如何使用 parse 方法创建节点并给它一个默认的命名空间来使用。
有什么办法吗?
【问题讨论】:
【参考方案1】:好的,我知道如何将命名空间添加到新的 XElement 和所有后代
foreach (XElement ce in e.DescendantsAndSelf())
ce.Name = xs + ce.Name.LocalName;
到目前为止,这解决了我的问题,但如果有人能看到潜在的缺陷或更简单的方法,请告诉我。
【讨论】:
以上是关于在解析期间设置命名空间的主要内容,如果未能解决你的问题,请参考以下文章