当前位置 : 主页 > 编程语言 > c语言 >

c# – XML元素和命名空间

来源:互联网 收集:自由互联 发布时间:2021-06-25
我有以下方法来解析 XMLElements: DisplayMessages(XElement root){ var items = root.Descendants("Item"); foreach (var item in items) { var name = item.Element("Name"); .... }} 在调试模式下,我可以将root视为XML,如下所示:
我有以下方法来解析 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.

网友评论