Apache XMLBeans可以读取部分XML文档(片段)并将其注入XML文档吗?



假设我有这样的东西:

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");
    }

或类似的东西。

希望这有效!祝你好运。

最新更新