0

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た。

理由はまだわかりませんが、少なくとも動作します。

4

1 に答える 1