gpt4 book ai didi

java - 如何使用 jsoup 文档将 child 添加到子节点

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:38:16 26 4
gpt4 key购买 nike

我正在尝试创建以下示例。

<body>
<resources>
<string-array name="mytest">
<item number="1">
<name>Testname</name>
</item>
<item number="2">
<name>blaat..</name>
</item>
</string-array>
</resources>
</body>

我通过执行以下操作来尝试:

FileInputStream fis = openFileInput("test1.xml");

Document doc = Jsoup.parse(fis, "UTF-8", "");
Node node = doc.getElementsByTag("item").get(getPosition());

fis.close();
fis = openFileInput("test2.xml");
Document doc2 = Jsoup.parse(fis, "UTF-8", "");
fis.close();

Elements test = doc2.getElementsByTag("resources");
if(test.size() < 0){
fis = openFileInput("test2.xml");
doc2 = Jsoup.parse(fis, "UTF-8", "");
fis.close();
doc2.appendElement("resources").parent();
FileOutputStream os = openFileOutput("test2.xml", Context.MODE_PRIVATE);
os.write(doc2.toString().getBytes());
os.close();

fis = openFileInput("test2.xml");
doc2 = Jsoup.parse(fis, "UTF-8", "");
fis.close();
doc2.appendChild(doc2.appendElement("string-array").attr("name", "mytest")).parent();
os = openFileOutput("test2.xml", Context.MODE_PRIVATE);
os.write(doc2.toString().getBytes());
os.close();

System.out.println("Created file\n");
}

doc2.appendChild(node);
FileOutputStream os = openFileOutput("test2.xml", Context.MODE_PRIVATE);

os.write(doc2.toString().getBytes());
os.close();

我现在得到的是:

<!-- test1.xml (input) -->
<resources>
<string-array name="firsttest">
<item number="1">
<name>Testname</name>
</item>
<item number="2">
<name>blaat..</name>
</item>
<item number="3">
<name>Next item</name>
</item>
</string-array>
</resources>

<!-- test2.xml (output)-->
<body>
<resources></resources>
<string-array name="mytest"></string-array>
<item number="1">
<name>Testname</name>
</item>
<item number="2">
<name>blaat..</name>
</item>
</body>

谁能告诉我我做错了什么,也许可以给我一些应该如何做的例子?

提前致谢

编辑:更详细一点:我想将一些项目从 test1.xml 复制到 test2.xml。所以基本上用户选择了一个指向 text1.xml 中的数字(项目编号)的列表项,然后该项目应该被复制到(ITEM HERE

最佳答案

Jsoup 通常用于解析 html,而不是 xml,尽管它们具有相同的结构。默认情况下,Jsoup 解析任何内容,然后将其包装在 <html><body> 中... </body></html> .

您的目标示例:

import org.jsoup.nodes.*;

Document doc = Jsoup.parse("");
// clear <html><body></body></html>
doc.html("");

Element e = doc.appendElement("body").appendElement("resources");

e = e.appendElement("string-array");
e.attr("name", "mytest");

for (int i = 0; i < 10; i++) {
Element sub = e.appendElement("item");
sub.attr("number", Integer.toString(i));
sub.appendElement("name").text("blahh");
}

引用资料:

关于java - 如何使用 jsoup 文档将 child 添加到子节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9516874/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com