加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读