假设我有这样的东西:
FooDocument fooDoc = FooDocument.Factory.newInstance();
fooDoc.addNewBar();
如果我生成一个字符串来表示fooDoc
,它看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<Foo>
<Bar/>
</Foo>
现在,假设我有一个文件,只包含以下内容:
<Bar/>
而不是以编程方式将Bar
添加为 Foo
的子项,我想读取文件并将文件的内容添加到fooDoc
中,如下所示:
FooDocument fooDoc = FooDocument.Factory.newInstance();
Bar bar = Bar.Factory.parse("file-containing-bar");
fooDoc.add(bar);
这可能与 XML Bean 有关吗?显然,仅包含Bar
节点的文件不是 XML 文件。
不幸的是,"普通"文件是不可能的。首先,文件女巫包含<Bar/>
必须是XML文件,以便传入的XML元素可以绑定到XMLBeans类型,而你的文件不是。在此参考中,您可以阅读更多内容: XMLBeans
如果有可能将"普通"Bar 文件转换为 XML 文件,并将 Foo 作为 foo 中的根元素.xml将 Bar 作为 bar.xml 中的根元素,那么存在一种可能的解决方法,例如:
1) 创建 2 个 XML 文件foo.xml - Foo 元素是根
<?xml version="1.0" encoding="utf-8"?>
<Foo>
<Bar/>
</Foo>
和bar.xml - bar 元素是根
<?xml version="1.0" encoding="utf-8"?>
<Bar/>
2)创建2个"文档"界面
FooDocument fooDocument = FooDocument.Factory.parse("foo.xml");
BarDocument barDocument = BarDocument.Factory.parse("bar.xml");
3) 创建柱线实例
Bar barToCreate = fooDocument.getFoo().addNewBar();
4) 使用 barToExploit 做 sth (表示根元素 Bar from bar.xml)
Bar barToExploit = barDocument.getBar();
然后,您要使用此barToExploit实例做什么完全取决于您。假设,它有一个存储字符串的子元素,例如你可以这样做:
barToCreate.setValue(barToExploit.getValue());
您应该能够将 XML 文件读入字符串数组,然后在需要的地方注入内容。
您可以使用 if(fileStringArray.contains("<foo> ++ seperator + </foo>"){//inject text}
以检查可以放置它的内容容器,然后将其注入到其中。 然后,您可以将文件另存为 XML 文件,如下所示:
while(fooDoc != null){
fooDoc.write(YourString);
fooDoc.write(Runtime().getRuntime().getProporty("line.seperator");
}
或类似的东西。
希望这有效!祝你好运。