c# – XML元素和命名空间
发布时间:2020-12-16 01:32:22 所属栏目:百科 来源:网络整理
导读:我有以下方法来解析 XMLElements: DisplayMessages(XElement root){ var items = root.Descendants("Item"); foreach (var item in items) { var name = item.Element("Name"); .... }} 在调试模式下,我可以将root视为XML,如下所示: ItemInfoList ItemInfo
我有以下方法来解析
XMLElements:
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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |