簡體   English   中英

如何使用Java考慮XML中的標記名稱及其屬性來獲取價值

[英]How to get value with considering tag name and its attribute in XML using Java

抱歉,我想問一下如何通過考慮標簽名稱及其屬性來獲取標簽值。 我使用XML在Lucene上建立索引

這是XML

 <?xml version="1.0" encoding="utf-8"?>
<Root xmlns:wb="http://www.worldbank.org">
  <data>
    <record>
      <field name="Country or Area" key="ARB">Arab World</field>
      <field name="Item" key="AG.AGR.TRAC.NO">Agricultural machinery, tractors</field>
      <field name="Year">1961</field>
      <field name="Value">73480</field>
    </record>
  </data>
</Root>

在早期的項目中,我僅使用如下來源獲得標簽值:

private String getTagValue(String tag, Element e) {
        NodeList nlList = e.getElementsByTagName(tag).item(0).getChildNodes();
        Node nValue = (Node) nlList.item(0);
        return nValue.getNodeValue();
    }

但是現在,我要考慮其屬性,因此必須定義什么標簽和屬性才能獲得正確的值。 感謝您的回答

為此,請使用xpath查詢。 首先創建與此類似的查詢(例如,獲取具有特定值的字段節點):

myQuery = xpath.compile("//field[@value=\"1234\"]");

然后通過在dom doc上運行查詢來填充節點集:

Object nodeSet = myQuery.evaluate(doc, XPathConstants.NODESET);

將getTagValue更改為

private static String getTagValue(NodeList list, String name) {
    for (int i = 0; i < list.getLength(); i++) {
        Element e = (Element) list.item(i);
        if (e.getAttribute("name").equals(name)) {
            return e.getTextContent();
        }
    }
    return null;
}

public static void main(String[] args) throws Exception {
    Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder()
            .parse(new File("1.xml"));
    NodeList fields = doc.getElementsByTagName("field");
    String country = getTagValue(fields, "Country or Area");
    String year = getTagValue(fields, "Year");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM