0

我有以下示例 MODS XML 部分:

<modsCollection xsi:schemaLocation="http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-4.xsd" xmlns="http://www.loc.gov/mods/v3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <mods version="3.4">
      <titleInfo>
         <title>PhD study</title> 
         <subTitle>trends and profiles 1996-97 to 2009-10</subTitle> 
      </titleInfo>
   <typeOfResource>text</typeOfResource> 
     ...
   </mods>
</modsCollection>

我的尝试:

        XNamespace ns = "http://www.loc.gov/standards/mods/v3";
        var test = modsDoc.Descendants(ns + "title").Single().Value;
        test.Should().NotBeNull();

源示例。

以上给我绝对没有!'System.InvalidOperationException:序列不包含任何元素'

4

1 回答 1

2

因为您在代码中使用的 NameSpace 是错误的。它应该是:

XNamespace ns = "http://www.loc.gov/mods/v3";

或者如果您想避免命名空间,请尝试:

var test2 = modsDoc.Descendants().Where(a => a.Name.LocalName == "title").Single().Value;

编辑:

检查这个例子:

XDocument modsDoc = XDocument.Load("test.xml");
XNamespace ns = "http://www.loc.gov/mods/v3";
var test = modsDoc.Descendants(ns + "title").Single().Value;
var test2 = modsDoc.Descendants().Where(a => a.Name.LocalName == "title").Single().Value;
Console.WriteLine(test);
Console.WriteLine(test2);

输出将是:

PhD study
PhD study
于 2012-07-20T11:09:28.530 回答