내가의 일부 XML 파일을 가지고는 다음과 같습니다XML :: LibXML의 XPath로 XML 파일 안의 요소에 액세스 할 수없는 이유는 무엇입니까?
<wave waveID="1">
<well wellID="1" wellName="A1">
<oneDataSet>
<rawData>0.1123975676</rawData>
</oneDataSet>
</well>
... more wellID's and rawData continues here...
나는 다음과 같은 사용하여 펄의 libXML 및 출력 wellName과 RAWDATA 사용하여 파일을 구문 분석하는 것을 시도하고있다 :
use XML::LibXML;
my $parser = XML::LibXML->new();
my $doc = $parser->parse_file('/Users/johncumbers/Temp/1_12-18-09-111823.orig.xml');
my $xc = XML::LibXML::XPathContext->new($doc->documentElement() );
$xc->registerNs('ns', 'http://moleculardevices.com/microplateML');
my @n = $xc->findnodes('//ns:wave[@waveID="1"]'); #xc is xpathContent
# should find a tree from the node representing everything beneath the waveID 1
foreach $nod (@n) {
my @c = $nod->findnodes('//rawData'); #element inside the tree.
print @c;
}
지금은 아무 것도 인쇄하지 않고 Xpath 문에 문제가 있다고 생각합니다. 제발 해결하도록 도와 주시겠습니까? 아니면 xpath 진술 문을 쏘는 방법을 보여줄 수 있습니까? 감사.
나는이 XML 라이브러리를 모른다. 그러나 주목할 것은'ns :'네임 스페이스 접두어이다. XPath 컨텍스트에 있다고 선언 한 내용은 무엇입니까? XML 파일에 기본 네임 스페이스 선언이 있습니까? (한 장소에서'ns :'를 사용하는 것은 잘못된 것이고 다른 장소에서는 접두사가 사용되지 않을 것입니다.) –
감사합니다. Kevin, 원래 질문에 네임 스페이스 행을 추가했습니다. 나는 당신이 제안한 것처럼 '// ns : rawData'를 시도했지만 "error : xmlXPathCompiledEval : evaluation failed"메시지가 나타납니다. – John
죄송합니다, 귀하의 의견을 잘못 읽었습니다. 원본 XML 파일에 네임 스페이스 선언이 있습니다. –
John