0

次のサンプルMODSXMLセクションがあります。

<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

コードで使用している名前空間が間違っているためです。そのはず:

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 に答える