繁体   English   中英

读取具有多个名称空间的xml

[英]read xml with multiple namespaces

我试图得到

<dc:identifier xsi:type="dcterms:URI" >bitstream link</dc:identifier>

和dc:title,publisher等在我的MVC应用中使用C#需要帮助,因为我是xml的新手

<metadata>
  <uketd_dc:uketddc
         xmlns:uketd_dc="http://naca.central.cranfield.ac.uk/ethos-oai/2.0/"
         xmlns:doc="http://www.lyncode.com/xoai"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:uketdterms="http://naca.central.cranfield.ac.uk/ethos-oai/terms/" 
         xmlns:dcterms="http://purl.org/dc/terms/"
         xmlns:dc="http://purl.org/dc/elements/1.1/"
         xsi:schemaLocation="http://naca.central.cranfield.ac.uk/ethos-oai/2.0/ http://naca.central.cranfield.ac.uk/ethos-oai/2.0/uketd_dc.xsd">
    <dc:date>2010-10-14T17:31:59Z</dc:date>
    <dc:date>2010-10-14T17:31:59Z</dc:date>
    <dc:date>2003-01-01</dc:date>
    <dc:date>2015-06-12T10:34:09Z</dc:date>
    <dcterms:issued>2003-01-01</dcterms:issued>
    <dcterms:isReferencedBy xsi:type="dcterms:URI">http://www.iadb.org/en/publications/publication-detail,7101.html?id=4486</dcterms:isReferencedBy>
    <dcterms:abstract>This book looks at the key issues and lessons that policymakers must consider in designing an adequate framework for dealing with financial crises. These include structural problems and their causes, policy actions, the role of market discipline, and preemptive strategies.</dcterms:abstract>
    <dc:title>Financial Crises in Japan and Latin America</dc:title>
    <dc:creator>Zahler, Roberto</dc:creator>
    <dc:contributor>VICTORCO</dc:contributor>
    <dc:subject>Financial Crises &amp; Economic Stabilization</dc:subject>
    <dc:description>This book looks at the key issues and lessons that policymakers must consider in designing an adequate framework for dealing with financial crises. These include structural problems and their causes, policy actions, the role of market discipline, and preemptive strategies.</dc:description>
    <dc:type>Books</dc:type>
    <dc:identifier>International Lending and Debt Problems</dc:identifier>
    <dc:identifier>International Lending and Debt Problems</dc:identifier>
    <dc:identifier>International Lending and Debt Problems</dc:identifier>
    <dc:identifier>International Lending and Debt Problems</dc:identifier>
    <dc:identifier>International Lending and Debt Problems</dc:identifier>
    <dc:identifier>9781931003476</dc:identifier>
    <dc:identifier>http://www.iadb.org/en/publications/publication-detail,7101.html?id=4486</dc:identifier>
    <dc:language>en</dc:language>
    <dc:publisher>Inter-American Development Bank (IDB)</dc:publisher>
    <dc:identifier xsi:type="dcterms:URI">http://publications.iadb.org/bitstream/handle/11319/195/Financial+Crises+in+Japan+and+Latin+America.pdf?sequence=1</dc:identifier>
    <uketdterms:checksum xsi:type="uketdterms:MD5">83c42636d27d253499be4db09db02312</uketdterms:checksum>
    <dc:identifier xsi:type="dcterms:URI">http://publications.iadb.org/bitstream/handle/11319/195/Financial+Crises+in+Japan+and+Latin+America.pdf.png?sequence=11</dc:identifier>
    <uketdterms:checksum xsi:type="uketdterms:MD5">4d4c1c29a730054db0cfcfc477333626</uketdterms:checksum>
    <dc:identifier xsi:type="dcterms:URI">http://publications.iadb.org/bitstream/handle/11319/195/Financial+Crises+in+Japan+and+Latin+America.pdf.jpg?sequence=5</dc:identifier>
    <uketdterms:checksum xsi:type="uketdterms:MD5">7e49ce2e1c21c12e141aa50402037b25</uketdterms:checksum>
    <dc:identifier xsi:type="dcterms:URI">http://publications.iadb.org/bitstream/handle/11319/195/Financial+Crises+in+Japan+and+Latin+America.pdf.txt?sequence=10</dc:identifier>
    <uketdterms:checksum xsi:type="uketdterms:MD5">bad0c21c28fc8a9946bdfa5eae2bf59d</uketdterms:checksum>
  </uketd_dc:uketddc>
</metadata>

我尝试了以下代码,但无法获取详细信息

XDocument billingData = XDocument.Load("http://publications.iadb.org/oai/request?verb=ListRecords&metadataPrefix=uketd_dc");
XNamespace oai_dc = XNamespace.Get("http://naca.central.cranfield.ac.uk/ethos-oai/2.0/");
XNamespace oai_dc1 = XNamespace.Get("http://naca.central.cranfield.ac.uk/ethos-oai/2.0/ http://naca.central.cranfield.ac.uk/ethos-oai/2.0/uketd_dc.xsd");
XNamespace dc = XNamespace.Get("http://purl.org/dc/elements/1.1/");

var billings = from billing in billingData.Descendants(oai_dc + "uketd_dc").Descendants(oai_dc1 + "dc")
               select new Billing(billing.Element(dc + "title").Value, billing.Element(dc + "creator").Value,
                       billing.Element(dc + "description").Value, billing.Element(dc + "identifier").Value);
allBillings.AddRange(billings.ToList<Billing>());

我不知道我做的是否正确。

您的查询正在寻找元素本地名称为uketd_dc然后为dc后代。 您没有任何具有这些名称的元素-这些似乎是名称空间前缀。 另外,我不确定您的oai_dc1名称空间应该是什么。

您可能想要的是:

XNamespace uketd_dc = "http://naca.central.cranfield.ac.uk/ethos-oai/2.0/";
XNamespace dc = "http://purl.org/dc/elements/1.1/";

var billings = from e in doc.Descendants(uketd_dc + "uketddc")
               select new Billing(
                    (string)e.Element(dc + "title"),
                    (string)e.Element(dc + "creator"),
                    (string)e.Element(dc + "description"),
                    (string)e.Element(dc + "identifier")
                    ); 

请注意,您的XML对其中某些元素具有多个元素(例如,标识符)。 这将返回第一个。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM