C#怎么用LINQ to XML处理默认命名空间

admin 百科 12
必须显式声明并使用默认命名空间:用XNamespace存储URI,查找时拼接ns+"Name";属性和值无需命名空间;创建新XML时同样需拼接命名空间。

C#怎么用LINQ to XML处理默认命名空间-第1张图片-佛山资讯网

在 C# 中用 LINQ to XML 处理带默认命名空间(xmlns="...")的 XML 时,必须显式声明并使用该命名空间,否则 XElement.Element()XElement.Elements() 等方法会返回 null 或空集合——因为默认命名空间会让所有未加前缀的元素实际属于该命名空间,而 LINQ to XML 默认不自动匹配它。

声明并使用默认命名空间

关键:用 XNamespace 存储命名空间 URI,并在查找元素时将其与本地名称拼接(用 + 运算符)。

  • 不要直接写 doc.Root.Element("Book")(这会失败)
  • 要写成 ns + "Book",其中 nsXNamespace 实例
  • 命名空间声明只写一次,复用即可

从 XML 字符串或文件加载时保留命名空间

LINQ to XML 默认会保留命名空间信息,无需额外设置。只要正确声明 XNamespace,就能精准匹配。

  • 示例 XML:<?xml version="1.0"?><root xmlns="http://example.com/ns"><book><title>C# Guide</title></book></root>
  • 代码中这样写:XNamespace ns = "http://example.com/ns";
    XDocument doc = XDocument.Parse(xml);
    XElement book = doc.Root.Element(ns + "Book");

查询子元素、属性和文本内容

所有层级的元素访问都要带上命名空间;属性和值不受影响(属性默认不在命名空间中,除非显式加了 xmlns 前缀)。

标签: c# xml处理

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~