JAVA:读取和修改xml

JAVA:读取和修改xml,xml,parsing,jaxb,Xml,Parsing,Jaxb,我需要读取xml文件并根据索引更新其某些属性的值。(例如Message.Person.Name=“XYX”,Message.Number.Number[1]=2) 约翰 美国 1. 2. xml结构每次都是不同的。是否有一种方法可以动态地将xml转换为Java对象,并更改必需属性的值并转换回xml?记住,我的xml结构没有任何特定的xsd。 我查看了JAXB和MOXy的示例,但它们似乎都需要xsd。如果您的xml结构每次都不同,那么它首先就不会有一个稳定的xsd 但是,如果它足够稳定(例如,

我需要读取xml文件并根据索引更新其某些属性的值。(例如Message.Person.Name=“XYX”,Message.Number.Number[1]=2)


约翰
美国
1.
2.
xml结构每次都是不同的。是否有一种方法可以动态地将xml转换为Java对象,并更改必需属性的值并转换回xml?记住,我的xml结构没有任何特定的xsd。
我查看了JAXB和MOXy的示例,但它们似乎都需要xsd。

如果您的xml结构每次都不同,那么它首先就不会有一个稳定的xsd

但是,如果它足够稳定(例如,始终是一条消息,带有Person元素和Number元素),则可能是一个选项。它不需要xsd


您必须使用getter和setter自己定义Message etc类,然后使用Jackson的XmlMapper类将xml读入对象。

我清楚地提到,我没有稳定的xsd,因此显然无法创建任何类。我需要另一种方法。你做到了,我的答案说明了这一点。正如我所说,Jackson不需要xsd,我的xml甚至不够稳定。每次都会完全不同。那么:从一个不断变化的来源?人们仍然使用流式解析器吗?斯塔克斯怎么样?谢谢尝试一下这个建议。如果您没有一个稳定的结构,那么为什么要转换为Java对象呢?简单的XPath或XSLT是否不起作用?能否提供一个XPath示例?我在这方面做得不多。您的意思是像
/Message/Numbers/Number[.='1']
?如果您的XML结构不稳定,您可能会有一些关于更新内容和方式的规则。规则最好与XSLT匹配。JAXB和co在有稳定结构的情况下工作。我可以在java中使用哪个库使用xpath访问XML?你们的意思是,若我使用DocumentBuilder,那个么我可以使用xpath引用文档中的元素?
<Message>
  <Person>
     <Name>John</Name>
     <Country>USA</Country>
  </Person>
  <Numbers>
    <Number>1</Number>
    <Number>2</Number>
  </Numbers>
</Message>