java - 使用从 XML 文件中提取的数据创建正则表达式

标签 java xml parsing dom xml-parsing

我正在解析一个 xml 文件,该文件的节点的文本如下:

  <?xml version="1.0"  encoding="iso-8859-1"?>
<country>
  <name> France </name>
  <city> Paris </city>
  <region>
    <name> Nord-Pas De Calais </name>
    <population> 3996 </population>
    <city> Lille </city>
  </region>
  <region>
    <name> Valle du Rhone </name>
    <city> Lyon </city>
    <city> Valence </city>
  </region>
</country>

我想要得到的是这样的值:

country -> name.city.region*
region  -> name.(population|epsilon).city*
name    -> epsilon
city    -> epsilon
population -> epsilon

我想不出一种方法来做到这一点

最佳答案

我添加了一个示例程序。请以同样的方式继续阅读。

public class TextXML {

    public static void main(String[] args) {
        try {

            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document doc = builder.parse(new File("text.xml"));

            // list of country elements
            NodeList listOfCountry = doc.getElementsByTagName("country");
            for (int s = 0; s < listOfCountry.getLength(); s++) {

                Node countyNode = listOfCountry.item(s);

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

                    Element countyElement = (Element) countyNode;

                    NodeList nameList = countyElement.getElementsByTagName("name");
                    // we have only one name. Element Tag
                    Element nameElement = (Element) nameList.item(0);
                    System.out.println("Name : " + nameElement.getTextContent());

                    NodeList cityList = countyElement.getElementsByTagName("city");
                    // we have only one name. Element Tag
                    Element cityElement = (Element) cityList.item(0);
                    System.out.println("City : " + cityElement.getTextContent());

                    NodeList regionList = countyElement.getElementsByTagName("region");
                    // we have only one name. Element Tag
                    Element regionElement = (Element) regionList.item(0);
                    System.out.println("Region : " + regionElement.getTextContent());

                    //continue further same way.
                }

            }

        } catch (SAXParseException err) {
            err.printStackTrace();
        } catch (SAXException e) {
            Exception x = e.getException();
            ((x == null) ? e : x).printStackTrace();

        } catch (Throwable t) {
            t.printStackTrace();
        }
    }

}

关于java - 使用从 XML 文件中提取的数据创建正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10395825/

相关文章:

java - 错误 :Exception [EclipseLink-4002] (Eclipse Persistence Services - 2. 4.1.v20121003-ad44345) : org. eclipse.persistence.exceptions.DatabaseException

java - 为什么新线程而不是 future {...}

java - 如何使用 SAX 解析器解析并获取具有特定类的 div 元素

c# - SQLite 代码分析 C#

javascript - javascript中通过遍历每个节点来解析xml数据

java - 如何编辑Java策略文件?

java - java如何处理按位运算符的结果

xml - 使用Shell脚本从xml获取元素并将其存储在数组中

java - Java解析XML文件时如何避免读取DTD?

ruby-on-rails - 使用 ruby​​ 将字符串解析为字符