java - 在java中显示XML中的文本内容

标签 java xml

<iata:DepartureAirport CodeContext="3">
BOM
</iata:DepartureAirport>

现在将 aiat:DepartureAirport 作为元素, 代码上下文作为属性和 9W 作为文本,我无法从 XML 中提取 9W , 但只能提取代码上下文值

public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
                tempVal = "";
        if(qName.equalsIgnoreCase("iata:Airline")) {
            //create a new instance of employee
            tempEmp = new employee();
            tempEmp.setType(attributes.getValue("CodeContext"));
            }

最佳答案

首先使用 xml 的架构文件加载 XML 文档

/**
     * This method reads in the xmlFile, validates it against the
     * schemaFile, and if valid, loads it into a WhitespaceFreeXMLDoc
     * and returns it, which helps because that's a much easier
     * format for us to deal with.
     * 
     * @param xmlFile Path and name of xml file to load.
     * 
     * @param schemaFile Path and name of schema file to use for validation.
     * 
     * @return A normalized Document object fully loaded with the data found
     * in the xmlFile.
     * 
     * @throws InvalidXMLFileFormatException Thrown if the xml file validation fails.

     */
    public Document loadXMLDocument(String xmlFile, String xsdFile)
            throws InvalidXMLFileFormatException
    {
        // FIRST VALIDATE
        boolean isValid = validateXMLDoc(xmlFile, xsdFile);
        if (!isValid)
        {
            throw new InvalidXMLFileFormatException(xmlFile, xsdFile);
        }

        // THIS IS JAVA API STUFF
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        try
        {            
            // FIRST RETRIEVE AND LOAD THE FILE INTO A TREE
            DocumentBuilder db = dbf.newDocumentBuilder();
            Document xmlDoc = db.parse(xmlFile);
            xmlDoc.getDocumentElement().normalize();

            // LET'S RETURN THE DOC
            return xmlDoc;
        }
        // THESE ARE XML-RELATED ERRORS THAT COULD HAPPEN DURING
        // LOADING AND PARSING IF THE XML FILE IS NOT WELL FORMED
        // OR IS NOW WHERE AND WHAT WE SAY IT IS
        catch(ParserConfigurationException | SAXException | IOException pce)
        {
            throw new InvalidXMLFileFormatException(xmlFile);
        }           
    } 

获得Document格式的xml后,您可以使用此方法获取该特定节点

 /**
     * This method extracts the data found in the doc argument that 
     * corresponds to the tagName and returns it as text. If no data
     * is found, null is returned. Note that this method is only good 
     * for elements that are unique to an XML file, meaning there is only 
     * one of them.
     * 
     * @param doc Fully-loaded DOM Document corresponding to a loaded
     * XML file from which we are loading the data.
     * 
     * @param tagName Name of the tag (i.e. field name) we are looking
     * to load data for.
     * 
     * @return The data in the doc that corresponds to the tagName element.
     * Note that if no data is found, null is returned.
     */
    public String getTextData(Document doc, String tagName)
    {
        // IT WAS FOUND, SO GET THE DATA
        Node node = getNodeWithName(doc, tagName);
        if (node == null)
        {
            return null;
        }
        else
        {
            String data = node.getTextContent();
            return data;   
        }
    }

如果你想获取节点本身而不是节点中的BOM数据

 /**
     * This method can be used to get the node in the document
     * that is an element of type tagName. null is returned
     * if none is found.
     * 
     * @param doc The XML document to search
     * 
     * @param tagName The name of the XML element/tag to
     * search for.
     * 
     * @return The first node found named tagName. If none is
     * found in the document, null is returned.
     */
    public Node getNodeWithName(Document doc, String tagName)
    {
         // GET THE NODE FOR THE tagName ELEMENT
        NodeList nodeList = doc.getElementsByTagName(tagName);

        // IF NOT FOUND, DON'T GO ON
        if (nodeList.getLength() == 0)
        {
            return null;
        }

        // IT WAS FOUND, SO GET THE DATA
        Node node = nodeList.item(0);
        return node;
    }

如果您还有任何疑问,请告诉我

关于java - 在java中显示XML中的文本内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14049801/

相关文章:

python - 更改 lxml 中的元素命名空间

java - 以标准格式打印 XML 元素

javascript - Jquery 解析 XML

java - 是否有注释可以使用 JAXB 注册类包?

xml - 使用 Shell 脚本将 XML 文件的标签存储在数组中

java - 使用 JavaFX 创建托盘图标

java - 无法从记录集中检索多个结果

java - Spring Securing Web 添加 css、js 和图像

java - EditText On update/onChange value 添加监听器

Java ical4j无法获取类别