我有以下方法来解析 XMLElements: DisplayMessages(XElement root){ var items = root.Descendants("Item"); foreach (var item in items) { var name = item.Element("Name"); .... }} 在调试模式下,我可以将root视为XML,如下所示:
DisplayMessages(XElement root) { var items = root.Descendants("Item"); foreach (var item in items) { var name = item.Element("Name"); .... } }
在调试模式下,我可以将root视为XML,如下所示:
<ItemInfoList> <ItemInfo> <Item> <a:Name>item 1</a:Name> ... <Item> ...
和var名称为空(我希望得到“第1项”).我试图使用“a:Name”但它引起异常(“字符:不能在名称中使用”).我不确定是否必须在root XElelement中设置名称空间. root下的所有xml节点都应位于同一名称空间中.
我是XElement的新手.在我的代码中,item.Element(“Name”)将获得其子节点“Name”的值值,是吗?
您需要使用包含命名空间的元素名称.试试这个:static void DisplayMessages(XElement root) { var items = root.Descendants(root.GetDefaultNamespace() + "Item"); foreach (var item in items) { var name = item.Element(item.GetNamespaceOfPrefix("a") + "Name"); Console.WriteLine(name.Value); } }
请注意,为了使代码更短,为XNamespace类重载了运算符:XNamespace.Addition Operator.