我有点复杂的XML。
from django.http import HttpReponse
def index(request):
return HttpResponse('Hello Ahmed')
我是VTD的新手,现在不是通过DOM或SAX解析整个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>
任何人都可以建议可以使用什么XPATH表达式。在此先感谢您的帮助。其他更好的选择也是受欢迎的。
以下是我正在做的事情。并没有工作!!
<child child_id="1_2">
如果我做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]");
但不是全部的标签。
我们非常感谢任何帮助,即使是关于我们应该如何提供XPATH的文档也可以提供帮助。
答案 0 :(得分:1)
你的XPath评估逻辑不正确(你的xpath表达似乎没问题)......
if(autoPilot.evalXPathToBoolean()) {
int token = autoPilot.evalXPath();
if(token != -1) {
String value = vtdNav.toNormalizedString(token);
System.out.println("The value is - " + value);
}
}
应改写为
int i=-1;
while((i=autoPilot.evalXPath())!=-1){
String value = vtdNav.toNormalizedString(i);
System.out.println("The value is - " + value);
}