鉴于以下XML作为Xdocument类文档返回' xdoc'
<MBNProfile xmlns=""http://www.microsoft.com/networking/WWAN/profile/v1"">
<Name>Generic</Name>
<IsDefault>true</IsDefault>
<ProfileCreationType>UserProvisioned</ProfileCreationType>
<SubscriberID>23xxxxxxxxxx426</SubscriberID>
<SimIccID>894xxxxxxxxxxxxxx66</SimIccID>
<HomeProviderName>EE</HomeProviderName>
<AutoConnectOnInternet>true</AutoConnectOnInternet>
<ConnectionMode>auto-home</ConnectionMode>
<Context>
<AccessString>general.t-mobile.uk</AccessString>
<Compression>DISABLE</Compression>
<AuthProtocol>NONE</AuthProtocol>
</Context>
</MBNProfile>
以下代码用于恢复&#39; AccessString&#39;和 &#39;名称&#39;元素。
XDocument xdoc = new XDocument();
xdoc = XDocument.Parse(profArr[0].GetProfileXmlData()); // Gets profile as above
xdoc.Add(new XComment("Modified by System")); // works
var ns = xdoc.Root.Name.Namespace; // has correct namespace
XElement pfn = xdoc.Element(ns + "Name"); // always null ?
XElement apn = xdoc.Element(ns + "AccessString"); // always null ?
pfn和apn XElements总是返回为&#39; null&#39;但是如果删除了名称空间方面 呼叫按预期工作。
我正在做的是正确访问这些元素是错误的,将新值写入这些元素的最佳方法是什么?
谢谢莎拉
答案 0 :(得分:1)
要检索XElement,您必须将您定位在他的父母身上:
XElement pfn = xdoc.Root.Element(ns + "Name");
要检索AccessString,它有点复杂,我访问DescendantNodes(),它返回所有子节点(XElement,Value等等),并且我过滤以检索预期的XElement:
XElement apn = xdoc.DescendantNodes()
.Where(x => x.GetType() == typeof(XElement) && (x as XElement).Name == ns + "AccessString")
.First() as XElement;
希望它有所帮助。