我想弄清楚如何最好地翻译这个:
<Source><properties>
....
<name>wer</name>
<delay>
<type>Deterministic</type>
<parameters length="1">
<param value="78" type="Time"/>
</parameters>
</delay>
<batchSize>
<type>Cauchy</type>
<parameters length="2">
<param value="23" type="Alpha"/>
<param value="7878" type="Beta"/>
</parameters>
</batchSize>
...
</properties></Source>
Run Code Online (Sandbox Code Playgroud)
成:
<Source><properties>
....
<name>wer</name>
<delay>
<Deterministic Time="78"/>
</delay>
<batchSize>
<Cauchy Alpha="23" Beta="7878"/>
</batchSize>
........
</properties></Source>
Run Code Online (Sandbox Code Playgroud)
我已经尝试过使用DocumentBuilderFactory,但是当我可以访问name标签的值时,我无法访问延迟/批处理部分中的值.这是我用过的代码
Element prop = (Element)propertyNode;
NodeList nodeIDProperties = prop.getElementsByTagName("name");
Element nameElement = (Element)nodeIDProperties.item(0);
NodeList textFNList = nameElement.getChildNodes();
String nodeNameValue = ((org.w3c.dom.Node)textFNList.item(0)).getNodeValue().trim();
//--------
NodeList delayNode = prop.getElementsByTagName("delay");
Run Code Online (Sandbox Code Playgroud)
调用getElementByName("type")或"parameters"似乎没有返回任何我可以使用的东西.我错过了什么,或者有一种更清洁的方式来处理现有的xml.
需要采用定义的格式以允许Castor进行编组和解组.
任何帮助将非常感激.
有多种方法可以转换XML.
1)您可以使用XSLT(XSL转换)来转换XML.它是一种基于XML的语言,用于转换其他XML文档,文本或HTML中的XML文档.语法很难学.但它是XML转换的强大工具. 这是一个教程.对于使用XSLT和Java,我会推荐Saxon,它还附带了一个很好的文档.使用XSLT的最大优点是转换可以在单独的模板中外部化.因此,您的Java代码不会被翻译内容混淆.然而,如上所述,学习曲线肯定更陡峭.
2)您可以使用XPath轻松选择节点.XPath是一种用于选择XML文档中的节点的查询语言.顺便提一下,XPath也用在XSLT中.例如XPath查询
//delay[type = 'Deterministic']/parameters/param/@value
Run Code Online (Sandbox Code Playgroud)
选择value包含在节点中的所有参数,这些参数是包含具有值"Deterministic" 的节点param的子delay节点type.这是一个很好的Web应用程序,用于测试XPath查询.这里是一个教程如何在Java中使用XPath和这里一般的XPath.您可以使用XPath表达式在Java代码中选择正确的节点.恕我直言,这比直接使用DOM对象模型更具可读性和可维护性(正如您已经学习的那样,这也是不时的尴尬).
3)您可以使用Smooks进行XML转换.如果转换变得相当复杂,这尤其有用.Smooks从输入XML填充对象模型,并使用Freemarker或XSL模板通过模板机制输出结果XML.Smooks具有非常高的吞吐量,可用于高性能环境,如ESB(例如JBoss ESB,Apache ServiceMix).可能会因为你的情况而被制服.
4)您可以使用Freemarker进行转换.我没有这方面的经验,但是我听说它可以用得相当简单.请参阅文档的"声明性XML处理"部分(另请参阅"公开XML文档"以了解如何阅读源XML).对我来说似乎相当简单.如果你试试这种方法,我很乐意听到它.
| 归档时间: |
|
| 查看次数: |
3864 次 |
| 最近记录: |