Java에서 새로운 InputSource
을 만들고이를 ByteArrayInputStream
으로 가져 오면 CharacterStream을 만들지 않으며 인코딩 세트도 생성하지 않습니다. xml
이 문자열로 저장 유효한 XML이다 내가 위를하고있어Java 새 InputSource가 문자 스트림을 생성하지 않습니다.
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 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
유효한 태그를 고려하지 않았습니다.
아직 확실하지 않은 이유는 있지만 적어도 작동합니다.
이를 기입하십시오 귀하의 질문에'xml'의 가치. 여기서 charset을 사용할 필요는 없다. 당신은 간단하게'new InputSource (new StringReader (xml))'를 쓸 수있다. – VGR
XML을 포함하도록 내 질문을 편집했습니다. XPath가 여전히 빈 문자열 만 반환한다고 제안하는 것처럼 새로운'StringReader (xml)'을 시도해보십시오. – MPhil123
XPath 표현식에 'Output/DataMatches'가 포함되어 있지만 DataMatches가 Output의 하위가 아닙니다. – VGR