我有一个巨大的xml文档,需要从中解析一些数据。我已经到了可以在NodeList中获得所需数据的地步,但是如果有两个条目需要处理,那么我就需要对其进行操作以使某些节点聚在一起。因此,我希望您可以执行一个评估以获取NodeList1,然后在NodeList1上运行另一个评估以获取NodeList2,然后我可以取出需要的东西。我可能完全以错误的方式执行此操作..所以这是xml。
<templateId root="123" />
<id root="123" />
<code code="51848-0" codeSystem="123" codeSystemName="LOINC" displayName="Assessments" />
<title>Visit Diagnoses</title>
<text>
<table>
<colgroup>
<col width="100%" />
</colgroup>
<thead>
<tr>
<th>Diagnosis</th>
</tr>
</thead>
<tbody>
<tr ID="vdx68" styleCode="normRow">
<td>
<paragraph>
<content ID="vdx68Name">Diagnosis Data 1</content>
<content> - Primary</content>
</paragraph>
<paragraph styleCode="allIndent">secondary diag data related to Primary</paragraph>
</td>
</tr>
<tr ID="vdx69" styleCode="altRow">
<td>
<paragraph>
<content ID="vdx69Name">Diagnosis Data 2</content>
</paragraph>
</td>
</tr>
</tbody>
</table>
<footnote ID="subTitle67" styleCode="xSectionSubTitle xHidden">documented in this encounter</footnote>
</text>
</section>
这段代码将我带到该部分和“ vdx”行
NodeList nodeList = (NodeList) xpath.evaluate("//*[local-name()='code'][@code='51848-0']/following-sibling::*[local-name()='text']//*[local-name()='tr'][starts-with(@ID,'vdx')]", new InputSource(new StringReader(docString)), XPathConstants.NODESET );
String diagnosis = null;
if (null != nodeList) {
log.debug("node count:" + nodeList.getLength());
for (int i = 0; i < nodeList.getLength(); i++) {
try {
log.debug("DIAG Node Data:" + nodeList.item(i).getFirstChild().getTextContent());
NodeList nodeList2 = (NodeList) xpath.evaluate("//*[local-name()='paragraph']", nodeList, XPathConstants.NODESET );)
log.debug("DIAG Node Data2:" + nodeList2.item(i).getFirstChild().getTextContent());
} catch (Exception e) {
}
}
}
并给出这些痕迹
DIAG Node Data:Diagnosis Data 1 - Primarysecondary diag data related to Primary
DIAG Node Data:Diagnosis Data 2
所以数据在那里。.但我想摆脱主要文本,并在其后放破折号,然后再放置次要文本。
所以在上面您可以看到我试图创建一个新的nodeList2 ..,但是它必须抛出异常,因为它从不追踪任何内容。所以我想我什至不能做我想做的..或者我只是语法不正确。在Google上找不到我想要做的事情...
所以任何人都有关于我应该如何做的提示..或具有正确的语法来进行第二次评估?