У меня есть гигантский 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 много информации о том, что я пытаюсь сделать ...
, так что у кого-нибудь есть советы о том, как я должен делать то, что мне нужно сделать ... или у меня правильный синтаксис для выполнения второй оценки?