Java では、新しいものを作成してそれInputSource
を渡そうとするByteArrayInputStream
と、CharacterStream もエンコーディング セットも作成されません。
XPathExpression compilablePath = xpath.compile("/OutputRoot/Output/AuthPlus/DataMatches/NoAgePri");
String result = compilablePath.evaluate(
new InputSource(new StringReader(xml))
);
if (!"".equals(result)) {
this.noAgePri = Integer.parseInt(result);
}
私は上記を行っています。ここxml
で、有効な XML は文字列として保存されます。XML 自体は次のとおりです。
<?xml version="1.0" encoding="utf-16"?>
<OutputRoot>
<Output>
<Control>
<Reference>ZX1J49CKQ4</Reference>
</Control>
<AuthPlus>
<ApplicantIdentifier>1</ApplicantIdentifier>
<AuthPlusRef />
<IACA>
<NoPriItem>12</NoPriItem>
<StrtOldPri>199402</StrtOldPri>
<NoSecItem>4</NoSecItem>
<NoSecSrc>1</NoSecSrc>
<StrtOldSec>201608</StrtOldSec>
</IACA>
<AOCA>
<NoPriItem>1</NoPriItem>
<StrtOldPri>200910</StrtOldPri>
<NoSecItem>1</NoSecItem>
<NoSecSrc>1</NoSecSrc>
</AOCA>
<IAPA>
<NoPriItem>0</NoPriItem>
<NoSecItem>0</NoSecItem>
<NoSecSrc>0</NoSecSrc>
</IAPA>
<AOPA>
<NoPriItem>0</NoPriItem>
<NoSecItem>0</NoSecItem>
<NoSecSrc>0</NoSecSrc>
</AOPA>
<DataMatches>
<NoAgePri>10</NoAgePri>
</DataMatches>
<Decision>
<DecCode>AU01</DecCode>
<DecText>The Applicant has been Authenticated to your required 'Level 1'</DecText>
<AuthIndex>80</AuthIndex>
<AuthText>A high level of Authentication has been found for the identity supplied</AuthText>
<IDConfLvl>1</IDConfLvl>
<IDConfText>The identity supplied has been confirmed at the required 'Level 1'</IDConfText>
<HighRiskCount>0</HighRiskCount>
</Decision>
</AuthPlus>
</Output>
</OutputRoot>
結果はresult
空の文字列であり、noAgePir
設定されていません。
助けてくれてありがとう。
修理済み。
助けてくれてありがとう - 主な問題は私が使っていた XPath にありました。何らかの理由で、XML ファイルはOutput
有効なタグを考慮していませんでし/OutputRoot/child::node()[2]/AuthPlus/DataMatches/NoAgePri
た。
理由はまだわかりませんが、少なくとも動作します。