如何使用 Java 获取 XML id 值?

2023-12-26

对于 XML 关键字搜索项目,用户可以搜索 XML 代码中的任意值:

<?xml version="1.0" encoding="UTF-8"?>
<company>
<staff id="1001">
    <firstname>sachin</firstname>
    <lastname>tendulkar</lastname>
    <nickname>TON</nickname>
    <salary>100000</salary>
</staff>
<staff id="2001">
    <firstname>MS</firstname>
    <lastname>Dhoni</lastname>
    <nickname>MSD</nickname>
    <salary>200000</salary>
</staff>    
<staff id="3001">
    <firstname>yuraj</firstname>
    <lastname>singh</lastname>
    <nickname>yuvi</nickname>
    <salary>200000</salary>
</staff>
</company>

如果用户搜索20000,结果将在 ID 中提供1001 and 2001所以输出应该是这样的:

  ms 
  dhoni
   msd
  200000

  yuraj
 singh
  yuvi
 20000

我想用 Java 来做这个。这是我到目前为止所写的内容:

package a;
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 TestJava
{

    public static void TestJava(String s) {

        try {

            File fXmlFile = new File("E:/xml/xml/src/a/test.xml");
            DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
            Document doc = dBuilder.parse(fXmlFile);


            doc.getDocumentElement().normalize();

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

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

            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;
                    if(eElement.getElementsByTagName("salary").item(0).getTextContent().equals(s))
                    {
                        System.out.println("Staff id : " + eElement.getAttribute("id"));
                        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("Nick Name : " + eElement.getElementsByTagName("nickname").item(0).getTextContent());
                        System.out.println("Salary : " + eElement.getElementsByTagName("salary").item(0).getTextContent());
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

这看起来像是 XPath 查询的工作!

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

    XPathFactory factory = XPathFactory.newInstance();
    XPath xpath = factory.newXPath();

    // This XPath query will give you a list of only those <staff> elements
    // which contain a <salary>200000</salary> element
    XPathExpression expr = xpath.compile("/company/staff/salary[text()=\"200000\"]/..");
    NodeList result = (NodeList)expr.evaluate(doc, XPathConstants.NODESET);

    NodeList nodes = (NodeList) result;
    for (int i = 0; i < nodes.getLength(); i++) {
        Element eElement = (Element) nodes.item(i);
        String id = eElement.getAttribute("id");
        System.out.println("Staff id : " + eElement.getAttribute("id"));
        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("Nick Name : " + eElement.getElementsByTagName("nickname").item(0).getTextContent());
        System.out.println("Salary : " + eElement.getElementsByTagName("salary").item(0).getTextContent());
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Java 获取 XML id 值? 的相关文章

随机推荐