簡體   English   中英

在Java中的一個標簽中讀取具有多個值的xml文件

[英]Read xml file with more than one value in one tag in Java

我有這樣的xml文件

  <Sample_Data>
    <lastname Name="lastname" Value="FIRSTNAME" />
    <firstname Name="firstname" Value="LASTNAME" />
    <DM Name="DM" Value="93.2" />
    <CP Name="CP" Value="7.7" />
  </Sample_Data>

我需要使用Java讀取此文件,並且使用如下代碼:

 try {

    DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
    Document doc = dBuilder.parse("File.xml");

    doc.getDocumentElement().normalize();

    System.out.println("Root element :" + doc.getDocumentElement().getNodeName());

    NodeList nList = doc.getElementsByTagName("Sample_Data");

    System.out.println("----------------------------");

    for (int temp = 0; temp < nList.getLength(); temp++) {

        Node nNode = nList.item(temp);

        System.out.println("\nCurrent Element :" + nNode.getNodeName());

        if (nNode.getNodeType() == Node.ELEMENT_NODE) {

            Element eElement = (Element) nNode;


            System.out.println("First Name : " + eElement.getElementsByTagName("firstname").item(0).getTextContent());
            System.out.println("Last Name : " + eElement.getElementsByTagName("lastname").item(0).getTextContent());
            System.out.println("DM : " + eElement.getElementsByTagName("DM").item(0).getTextContent());
            System.out.println("CP : " + eElement.getElementsByTagName("CP").item(0).getTextContent());

        }
    }

    } catch (Exception e) {
    e.printStackTrace();
    }

但是我無法獲取firstname,lastname,DM和CP的值,因此無法獲取它們的空值。

有人可以幫我解決這個問題嗎?

您所有的元素都沒有文本節點。 因此getTextContent()為空。 您應該改為閱讀屬性。

getElementsByTagName().item(0)返回一個Node ,因此您應該首先將其ElementElement

((Element) eElement.getElementsByTagName("firstname").item(0)).getAttribute("Value")

在保護代碼中,您還應該檢查NodeList eElement.getElementsByTagName("firstname")包含某些項目。

我會說,最好的辦法是獲取適當的XML文件。 這樣,您就不必解析多個屬性。

你明白了:

<Sample_Data>
    <lastname Name="lastname" Value="FIRSTNAME" />
    <firstname Name="firstname" Value="LASTNAME" />
    <DM Name="DM" Value="93.2" />
    <CP Name="CP" Value="7.7" />
</Sample_Data>

相反,您應該有類似的東西:

<Sample_Data>
    <lastname> FIRSTNAME </lastname>
    <firstname> firstname </firstname>
    <DM> 93.2 <DM/>
    <CP> 7.7 </CP>
</Sample_Data>

使用起來更容易嗎?

暫無
暫無

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

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