如何使用 JDOM 编写和获取具有相同名称的同一级别的所有 xml 元素

Posted

技术标签:

【中文标题】如何使用 JDOM 编写和获取具有相同名称的同一级别的所有 xml 元素【英文标题】:how to write and get all the xml elements in same level with same name using JDOM 【发布时间】:2014-09-27 15:13:33 【问题描述】:

我的xml文件如下

<lexicon>
  <lexiconElement>
    <word>xxxx</word>
    <tag>NN
      <frequancy>3</frequancy>
    </tag>
    <tag>VB
      <frequancy>2</frequancy>
    </tag>
  </lexiconElement>
</lexicon>

我需要知道如何在使用 JDOM 更新时将许多元素附加到同一 xml 文件中的同一级别,以及如何使用 JDOM 读取同一级别中具有相同名称的那些元素???

【问题讨论】:

你能用输入和输出xml更新你的问题吗?假设给定的 xml 是您的输入。您更新后的 xml 应该是什么样子。 更新可以通过几种方式进行。 1. 向 xml 添加新的 元素。 2.更新 之间的文本。 3.更新之间的文字 能否提供样品。您对给定的 xml 期望什么样的结果 更新可以通过几种方式进行。 1. 向 xml 添加新的 元素。 2.更新 之间的文本。 3.更新之间的文字 我需要知道如何获取所有 元素之间的文本 【参考方案1】:

我希望这就是你要找的。​​p>

try 

            SAXBuilder builder = new SAXBuilder();
            File xmlFile = new File("D:\\your_file.xml");

            Document doc = (Document) builder.build(xmlFile);
            Element rootNode = doc.getRootElement();

            Element lexiconElement = rootNode.getChild("lexiconElement");

            // 1. add new <tag> elements to xml
            Element newTag = new Element("your_new_tag").setText("your_new_tag_value");
            lexiconElement.addContent(newTag);

            // 2. Update the text between <frequancy> in perticular tag
            //lexiconElement.getChild("tag").getChild("frequancy").setText("9");

            // 2. Update the text between <frequancy> in all tag
            List<Element> list = lexiconElement.getChildren("tag");
            for(Element elm : list)
                elm.getChild("frequancy").setText("324");
            

            // 3. Update the text between <word>
            lexiconElement.getChild("word").setText("yyyy");

            XMLOutputter xmlOutput = new XMLOutputter();

            xmlOutput.output(doc, new FileWriter("D:\\your_file.xml"));

            System.out.println("*********Done************");
         catch (IOException io) 
            io.printStackTrace();
         catch (JDOMException e) 
            e.printStackTrace();
        

【讨论】:

以上是关于如何使用 JDOM 编写和获取具有相同名称的同一级别的所有 xml 元素的主要内容,如果未能解决你的问题,请参考以下文章

如何将相同的 SHA1 用于具有不同包名称的应用程序,作为另一个应用程序?

使用JDOM操作XML

如何从元素中具有相同名称的 xml 文件中获取特定值?

“Company.Model.User”类型和“Company.Core.Model.User”类型都具有相同的简单名称“User”,因此不能在同一模型中使用

如何选择(所有)表 1 中的一行,该行具有与表 2 相同的另一行

使用 Laravel 测试两个具有相同输入名称的表单