У меня немного сложный XML.
<?xml version="1.0" encoding="UTF-8"?><test:mark><parent parent_id="1"><child child_id="1_1">11Value</child><child child_id="1_2">12Value</child><child child_id="1_3">13Value</child></parent><other other_id="1"><inner>1233</inner></other></test:mark>
Я очень новичок в VTD, и теперь вместо разбора всего XML с помощью DOM или SAX я хочу получить значение <child child_id="1_2">
Может ли кто-нибудь предложить, какое выражение XPATH можно использовать. Заранее спасибо за помощь. Приветствуются и другие лучшие варианты.
Ниже то, что я делаю. И не работает!!
VTDGen vtdGen = new VTDGen();
vtdGen.parseFile("E:/JavaProjects/SampleTestingFiles/SampleXML.xml", true);
VTDNav vtdNav = vtdGen.getNav();
AutoPilot autoPilot = new AutoPilot(vtdNav);
try {
autoPilot.selectXPath("//parent/child[@child_id='1_2']");
if(autoPilot.evalXPathToBoolean()) {
int token = autoPilot.evalXPath();
if(token != -1) {
String value = vtdNav.toNormalizedString(token);
System.out.println("The value is - " + value);
}
}
} catch (Exception e) {
e.printStackTrace();
}
Если я сделаю что-то вроде autoPilot.selectXPath("//parent/child[@child_id]");
. Он выбирает некоторые теги с атрибутом @child_id
, но не все.
Любая помощь очень ценится, даже документация о том, как мы должны предоставлять XPATH, может помочь.