获取特定属性xml java

时间:2016-02-08 02:01:27

标签: java xml nodelist

我正在尝试阅读这个xml文件,我只对Item Name =" PubDate"感兴趣。属性。

<eSummaryResult>
<DocSum>
<Id>23373820</Id>
<Item Name="PubDate" Type="Date">2013 Mar</Item>
<Item Name="EPubDate" Type="Date">2013 Feb 1</Item>
<Item Name="Source" Type="String">Expert Opin Emerg Drugs</Item>
<Item Name="AuthorList" Type="List">...</Item>
<Item Name="LastAuthor" Type="String">Rascol O</Item>
<Item Name="Title" Type="String">...</Item>
<Item Name="Volume" Type="String">18</Item>
<Item Name="Issue" Type="String">1</Item>
<Item Name="Pages" Type="String">39-53</Item>
<Item Name="LangList" Type="List">...</Item>
<Item Name="NlmUniqueID" Type="String">101135662</Item>
<Item Name="ISSN" Type="String">1472-8214</Item>
<Item Name="ESSN" Type="String">1744-7623</Item>
<Item Name="PubTypeList" Type="List">...</Item>
<Item Name="RecordStatus" Type="String">PubMed - indexed for MEDLINE</Item>
<Item Name="PubStatus" Type="String">ppublish+epublish</Item>
<Item Name="ArticleIds" Type="List">...</Item>
<Item Name="DOI" Type="String">10.1517/14728214.2013.766168</Item>
<Item Name="History" Type="List">...</Item>
<Item Name="References" Type="List"/>
<Item Name="HasAbstract" Type="Integer">1</Item>
<Item Name="PmcRefCount" Type="Integer">2</Item>
<Item Name="FullJournalName" Type="String">Expert opinion on emerging drugs</Item>
<Item Name="ELocationID" Type="String">doi: 10.1517/14728214.2013.766168</Item>
<Item Name="SO" Type="String">2013 Mar;18(1):39-53</Item>
</DocSum>
</eSummaryResult>

当我的程序通过以下代码

DocumentBuilderFactory dbPub = DocumentBuilderFactory.newInstance();
              DocumentBuilder db2 = dbPub.newDocumentBuilder();
              url1 = "http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=pubmed&id=23373820";
              Document docPmid = db2.parse(new URL(url1).openStream());                                 
             NodeList nl = docPmid.getElementsByTagName("Item");
             if(nl !=null && nl.getLength() > 0)
             {
               for (int y = 0; y < nl.getLength(); y++)
               {
                 Element el = (org.w3c.dom.Element) nl.item(y);
                 if (el.hasAttribute("Name") && el.getAttribute("Name").equals("PubDate"))
                 {
                   String pubDate = el.getAttribute("Name");
                   System.out.println("PubDate :"+pubDate);
                 }
               }
             }

而不是获得PubDate:2013年3月 我得到PubDate:PubDate

2 个答案:

答案 0 :(得分:0)

可能你只是忽略了......

如果

,您正在使用相同的内容
if (el.hasAttribute("Name") && el.getAttribute("Name").equals("PubDate"))

以后再打印:

String pubDate = el.getAttribute("Name");
System.out.println("PubDate :"+pubDate);

这可能不是您想要做的,您想要阅读内容,而不是属性值......

答案 1 :(得分:0)

在此XML行

<Item Name="PubDate" Type="Date">2013 Mar</Item>

你有一个名为'Item'的元素,它有两个属性:

  • 名称= 'pubdate的'
  • 类型= '日期'

和一个值,即“2013年3月”。

在您的代码中,符合:

String pubDate = el.getAttribute("Name");

你要求一个名为'Name'的属性的值,实际上是'PubDate'。

你想要做的是找到一个'Item'元素,'Name'属性等于'PubDate',然后用'getNodeValue()'函数得到它的值。