这是我的XML内容:
<app:DocItem Name="hello" ItemId="00000000-0000-0000-0000-000000000000" xmlns:app="xxxx">
<app:Data>
<cccc xmlns="yyyy" SchemaWriteVersion="1">
<Key mClass="Tag">
<SId Namespace="abc" ElementName="VP" />
</Key>
<Dictionary NId="116" Count="66">
<Item>
<Key TId="7" Name="TemporaryDoNotUse" />
<Value Signature="....">
</Value>
</Item>
</Dictionary>
</cccc>
</app:Data>
</app:DocItem>
以下是我在C#函数中尝试的内容:
public static string GetVoicePolicy(string xmlStr)
{
XDocument xdoc = XDocument.Parse(xmlStr);
StringBuilder result = new StringBuilder();
XNamespace app = "app";
XName n2 = app + "DocItem";
XName n3 = app + "Data";
XElement l2 = xdoc.Element(n2); //<<--------------------Line X
XElement l3 = l2.Element(n3);
XElement l4 = l3.Element("cccc");
XElement l5 = l4.Element("Dictionary");
....
}
我知道带字符“:”的字符串,我不能直接使用“app:DocItem”,但是在使用XNamespace之后,我仍然在执行“X行”后得到“l2 == null”。
我可以看到xdoc的内容是正确的,但l2只是没有。我错过了什么吗?
谢谢!
答案 0 :(得分:2)
如果你真的有
xmlns:app="xxxx"
然后你想要
XNamespace app = "xxxx";
名称app
不是命名空间的名称,它只是该特定XML文件中使用的本地前缀。它甚至可能每次都改变。