sta*_*ckr 6 java xml android jsoup
我正在尝试创建以下示例.
<body>
<resources>
<string-array name="mytest">
<item number="1">
<name>Testname</name>
</item>
<item number="2">
<name>blaat..</name>
</item>
</string-array>
</resources>
</body>
Run Code Online (Sandbox Code Playgroud)
我通过执行以下操作尝试此操作:
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();
Run Code Online (Sandbox Code Playgroud)
而我现在得到的是:
<!-- 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>
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我我做错了什么,也许可以给我一些如何做的例子?
提前致谢
编辑:提供更多细节:我想将一些项目从test1.xml复制到test2.xml.所以基本上用户选择一个指向text1.xml(项目编号)中的数字的listitem,然后该项目应该被复制到(ITEM HERE)
小智 10
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");
}
Run Code Online (Sandbox Code Playgroud)
参考文献:
| 归档时间: |
|
| 查看次数: |
7779 次 |
| 最近记录: |