Java 是否有任何方法可以像我们使用XPath阅读一样编写XML?
我有一个如下所示的XML,我正在使用XPath阅读XML。因为我知道数据的确切位置,所以我将动态地将路径传递给Expression对象并获取值Java 是否有任何方法可以像我们使用XPath阅读一样编写XML?,java,xml,xpath,xlink,Java,Xml,Xpath,Xlink,我有一个如下所示的XML,我正在使用XPath阅读XML。因为我知道数据的确切位置,所以我将动态地将路径传递给Expression对象并获取值 <MESSAGE xmlns:xlink="http://www.w3.org/1999/xlink"> <ABOUT_VERSIONS> <ABOUT_VERSION SequenceNumber="1" xlink:label="ASSET_1" > <CreatedDate
<MESSAGE xmlns:xlink="http://www.w3.org/1999/xlink">
<ABOUT_VERSIONS>
<ABOUT_VERSION SequenceNumber="1" xlink:label="ASSET_1" >
<CreatedDatetime>2015-08-24T09:30:47Z</CreatedDatetime>
<DataVersionName>Purchase Example</DataVersionName>
</ABOUT_VERSION>
</ABOUT_VERSIONS>
<DEALS>
<DEAL>
<ACCOUNT>
<Name>Test</Name>
</ACCOUNT>
</DEAL>
</DEALS>
</MESSAGE>
有没有这种用Java编写XML的方法?以后我需要用额外的标记和数据编写相同的XML。XPath本身是一种模式匹配语言,就像正则表达式一样,所以不能直接使用它来进行操作。但与正则表达式一样,还有一些引擎允许您使用XPath作为更大技术堆栈的一部分来修改文档 如果您试图修改一个现有的XML文档,那么应该考虑将其作为DOM树来读取。然后,可以使用XPath轻松查找要修改的单个节点或节点组。使用DOM模型修改它们,然后将其序列化回磁盘 或者,您可以创建一个XSLT表来转换输入。你可以从身份转换开始,看起来像这样
这将产生与输入文档相同的XML输出。然后,您可以开始添加模板来修改与所需XPath匹配的特定节点。根据我的经验,这比DOM操作要困难得多,因为通常在Java中执行的大多数逻辑现在都必须在XSLT中执行,XSLT是它自己的语言。然而,由于您可以使用流进行XSLT转换,因此如果您使用的是很难放入内存的非常大的文档,则有时会更容易
我会提供更多的细节,但老实说,我已经有6年没有使用过这些东西了,所以我对语法有点生疏
XPathFactory xpf = XPathFactory.newInstance();
XPath xPath = xpf.newXPath();
XPathExpression pathExpression =
xPath.compile("MESSAGE/ABOUT_VERSIONS/ABOUT_VERSION");
InputSource inputSource = new InputSource("C:/Sample.xml");
NodeList Nodes = (NodeList)
xPath.evaluate("MESSAGE/ABOUT_VERSIONS/ABOUT_VERSION", inputSource,
XPathConstants.NODESET);