如何在 XML C# 中获取多个命名空间?

How do I get multiple namespaces in XML C#?

以下是 XML 格式:

<?xml version="1.0" encoding="UTF-8"?>
<package version="2.0" unique-identifier="isbn0000000000000" xmlns="http://www.idpf.org/2007/opf">
<metadata xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:opf="http://www.idpf.org/2007/opf">
<dc:title>Eltern Family</dc:title>
<dc:creator></dc:creator>
<dc:publisher></dc:publisher>
<dc:rights></dc:rights>
<dc:identifier id="isbn0000000000000">0000000000000</dc:identifier>
<dc:language>de</dc:language>
<dc:date opf:event="publication">2019-02-11</dc:date>
</metadata>
</package>

这里我通过XDocument.Root.GetDefaultNamespace();获得了默认的命名空间。但是可以看到,<metadata> XML 节点中有多个命名空间。问题是,它们是可变的,即每个 XML 可能有不同的值,所以我不能声明一个具有一个固定值的变量。

如何获取命名空间,以便我可以向后代元素添加值?

请帮忙。

问候 阿曼

如果像您所说的那样要设置 dc:rights 的内容,那么您需要获取该元素。

您可以通过名称执行此操作 - 'qualified name' 由命名空间和本地名称组成。命名空间前缀 dc 本身并不重要,它只是用作 shorthand 来引用文档中的命名空间。

假设您已将此 XML 解析为名为 docXDocument:

XNamespace dc = "http://purl.org/dc/elements/1.1/"

var rights = doc.Descendants(dc + "rights").Single();

rights.Value = "text";