XML格式的Java字符串操作

时间:2011-07-13 18:22:23

标签: java xml string json jenkins

我正在开发一个包含node(computer)个对象的插件,其属性如:

String name
String description
String labels
Launcher computerLauncher
...

我可以将node(computer)对象转换为XML格式的字符串,如:

String xml = jenkins.instance.toXML(node);

这给了我一个字符串:

<name>Computer1</name>
<description>This is a description</description>
<labels>label1 label2</labels>
<launcher>windows.object.launcher.12da1</launcher>

然后我可以走另一条路了:

Node node = jenkins.instance.fromXML(xml);

我没有改变Node中属性的方法,因此我想将其转换为XML,更改som属性,然后再将其作为Node。

我看到两个选项

  1. 使用一些String方法处理XML以替换&lt;&gt;之间的所有内容。标签

  2. 尝试将XML字符串转换为类似真实对象的内容并以此方式对其进行操作。

  3. 不确定什么是最好的方法。

3 个答案:

答案 0 :(得分:4)

为什么在已经支持使用Java的DOM(文档对象模型)API的所有内容时发明了新东西?

使用DocumentBuilderFactory获取DocumentBuilder并创建Document实例。有了这个,您可以在toXML方法中创建“节点”对象(请注意您发布的示例实际上是有效的XML,它缺少根节点),将文档序列化为字符串可能是使用Transformer完成。

使用DOM API,您还可以修改现有元素的属性。

使用DocumentBuilder #parse在DocumentBuilder的帮助下再次从XML字符串解析Document实例。

如果你的DOM操作不是太复杂,那么这应该是一个很好,快速的方法来实现你的目标。

答案 1 :(得分:2)

使用类似DOM的方法对我来说很有意义。但是不要使用DOM本身:有更好的替代方案,如JDOM和XOM,它们有更友好的API。

答案 2 :(得分:0)

最近我不得不操纵大型XML文件(我的软件必须动态创建一些XML文件并从其他一些XML文件中获取输入数据)。为此,我使用了JAXB,它是一个非常简洁的API,可以将XML文件自动编组为Java对象,将Java对象自动编组为XML文件。

但是要做到这一点,我必须创建一个XSD文件来指定我需要读取和写入的XML。

因此,JAXB需要比DOM设置更多的工作,所以如果你的需求很简单,我建议你使用DOM,但是如果你的需求更复杂,那么我会建议使用JAXB。