DOM 树结构中通过标签名称和属性方法进行 XML 解析

XML parsing by tag-names and attributes method in DOM tree structure

提问人:Prakhar Tewari 提问时间:7/16/2022 更新时间:7/16/2022 访问量:139

问:

我正在尝试解析此 xml 文件,但我只获得了根元素,而不是它的子节点。 我需要来自节点的一些特定值的信息,例如使用 .item() 方法。因为,我没有输入它的子节点,所以它没有给我指定的值。请帮我解决这个问题...

XML 文件

<Ws>
    <Id V='862631039910699'>
        <Dt V='08/07/22;11/25'>
            <T V='24.3;24.3;24.3'/>
            <H V='98.0;98.0;98.0'/>
            <W V='1.3;272'/>
            <G V='25;2.4'/>
            <A V='0.00;468;472;471'/>
            <D V='0.00;8.9;8.065;0.0000;0.0000'/>
        </Dt>
    </Id>
</Ws>
Java DOM XML 解析

评论

0赞 vanje 7/16/2022
请出示您的代码。
0赞 Prakhar Tewari 7/16/2022
我在答案部分发布了代码。

答:

0赞 Prakhar Tewari 7/16/2022 #1
package api;

import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.w3c.dom.Node;
import org.w3c.dom.Element;
import java.io.File;
public class Web{
    public static void main(String argv[])
    {
        try {
            
            File file = new File("C:\\Users\\Prakhar\\OneDrive\\Desktop\\WBE2.xml.txt");

            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

            
            DocumentBuilder db = dbf.newDocumentBuilder();
            Document doc = db.parse(file);

            doc.getDocumentElement().normalize();
            System.out.println("Root element: " + doc.getDocumentElement().getNodeName());
            
            NodeList nodeList = doc.getElementsByTagName("Ws");

            for (int i = 0; i < nodeList.getLength(); ++i) {
                Node node = nodeList.item(i);
                System.out.println("\nNode Name :" + node.getNodeName());
                
                if (node.getNodeType()== Node.ELEMENT_NODE) {
                   
                    Element tElement = (Element)node;
                    

                    System.out.println("IMEI: " +
                            doc.getDocumentElement().getChildNodes().item(0).getFirstChild().getChildNodes().item(0).getAttributes().getNamedItem("V").getNodeValue());

                    System.out.println("Date/Time: " +
                            doc.getDocumentElement().getChildNodes().item(0).getFirstChild().getChildNodes().item(1).getAttributes().getNamedItem("V").getNodeValue());

                    System.out.println("Temperature: " +
                            doc.getDocumentElement().getChildNodes().item(0).getFirstChild().getChildNodes().item(2).getAttributes().getNamedItem("V").getNodeValue());
                    
                    System.out.println("Humidity: " +
                            doc.getDocumentElement().getChildNodes().item(0).getFirstChild().getChildNodes().item(1).getAttributes().getNamedItem("V").getNodeValue());
                    
                    System.out.println("Wind Speed: " +
                            doc.getDocumentElement().getChildNodes().item(0).getFirstChild().getChildNodes().item(2).getAttributes().getNamedItem("V").getNodeValue());



                }
            }
        }
        catch (Exception e) {
            System.out.println(e);
        }
    }
}

评论

0赞 Community 7/18/2022
您的答案可以通过其他支持信息进行改进。请编辑以添加更多详细信息,例如引文或文档,以便其他人可以确认您的答案是正确的。您可以在帮助中心找到有关如何写出好答案的更多信息。