【发布时间】:2011-01-23 13:28:21
【问题描述】:
我正在尝试找出最好的翻译方法:
<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>
进入:
<Source><properties>
....
<name>wer</name>
<delay>
<Deterministic Time="78"/>
</delay>
<batchSize>
<Cauchy Alpha="23" Beta="7878"/>
</batchSize>
........
</properties></Source>
我尝试过使用 DocumentBuilderFactory,但是虽然我可以访问名称标签的值,但我无法访问延迟/批处理部分中的值。这是我使用的代码
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");
调用 getElementByName("type") 或 "parameters" 似乎没有返回任何我可以使用的东西。我是否遗漏了什么,或者是否有更简洁的方法来处理现有的 xml。
需要采用已定义的格式以允许 Castor 进行编组和解组。
任何帮助将不胜感激。
【问题讨论】:
-
这更像是 XML 转换,你不应该使用 XSLT 吗?
-
我强烈建议使用 XPATH 来进行任何 XML 解析,在我看来这更合乎逻辑。这是一个很好的教程 (ibm.com/developerworks/library/x-javaxpathapi.html)。您能否详细说明调用 getElementsByName("type") 时究竟得到了什么? NullPointerExceptions / 空字符串?
-
您的标题不正确,您不是在解析而是在操作 DOM 树。