gpt4 book ai didi

java - XQUERY JAVA 不工作

转载 作者:行者123 更新时间:2023-12-01 15:21:46 24 4
gpt4 key购买 nike

我从复杂的 XML 文件中获取一些属性:

<rsp>
<csl d='10775.916760613756' id='2003' nam='AUTOS TEZIUTLÁN, S.A. DE C.V.'
adr='KM. 1 CARR. TEZIUTLÁN-TLAPACOYAN' tel='231312-12-05'
lat='19.826765' lon='-97.347906' />
<csl d='10789.680721293766' id='2019' nam='AUTOMOVILÍSTICA DE TEHUACAN, S.A. DE C.V.'
adr='BLVD. ADOLFO LOPEZ MATEOS NO. 3623' tel='238382-44-33'
lat='18.467281' lon='-97.417901' />
<csl d='10848.586325071066' id='2013' nam='AUTOMOTRIZ DE LA SIERRA, S.A. DE C.V.'
adr='AUSENCIO T. JIMÉNEZ No. 1' tel='776762-05-42'
lat='20.174386' lon='-98.06125' />
<csl d='10866.815936520663' id='2028' nam='MOTORES ALEMANES RIVERA S.A. DE C.V.'
adr='CALZADA IGNACIO ZARAGOZA NO. 180' tel='222286-02-02'
lat='19.064258' lon='-98.179042' />
<csl d='10867.374198658401' id='2012' nam='ARMENTA AUTOMOTRIZ, S.A. DE C.V.'
adr='24 NORTE No. 214' tel='222235-87-68'
lat='19.038912' lon='-98.183101' />
</rsp>

但是我的 XQUERY 只给我第一个属性,并且只给我使用此类的属性:

public class XMLParser {

private String[] resultTable;

public XMLParser(){}

public String[] stringToXML(String xmlString) {

try{

DocumentBuilderFactory dBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dBuilderFactory.newDocumentBuilder();
InputSource iSource = new InputSource();
iSource.setCharacterStream(new StringReader(xmlString));
Document doc = dBuilder.parse(iSource);
NodeList nList = doc.getElementsByTagName("tpr");
resultTable = new String [nList.getLength()];

for (int i=0; i<nList.getLength(); i++){

Element e = (Element)nList.item(i);
NodeList pCode = e.getElementsByTagName("tpr");
Element line = (Element)pCode.item(0);
resultTable[i] = getCharacterDataFromElement(line);

}
}
catch(Exception e) {
e.printStackTrace();
}

return resultTable;
}

public static String getCharacterDataFromElement(Element e) {

Node child = e.getFirstChild();

if (child instanceof CharacterData) {
CharacterData cData = (CharacterData) child;
return cData.getData();
}

return "null";
}

public static String getParamByXPath(String xmlString, String expression) {

String ret = "";
XPath xpath = XPathFactory.newInstance().newXPath();

try{

DocumentBuilderFactory dBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dBuilderFactory.newDocumentBuilder();
InputSource iSource = new InputSource();
iSource.setCharacterStream(new StringReader(xmlString));
Document doc = dBuilder.parse(iSource);
XPathExpression exp = xpath.compile(expression);
Object result = exp.evaluate(doc);

if (result instanceof String) ret = (String)result;
else if (result instanceof Boolean) ret = result.toString();
else if (result instanceof Double) ret = result.toString();
else if (result instanceof NodeList) {

NodeList list = (NodeList) result;
Node node = list.item(0);
Log.d("LIST", Integer.toString(list.getLength()));
ret = node.getTextContent();

}

}catch(Exception e) {
e.printStackTrace();
}

return ret;
}

我正在使用此行调用该方法:

String loc1 = XMLParser.getParamByXPath(service, "//@d");

我一直在使用其他查询,但结果始终是第一个元素...我可能会缺少什么?

最佳答案

//@d XPath 将返回文档中所有 @d 属性节点的列表。

您的 Java 代码:

  else if (result instanceof NodeList)    {
NodeList list = (NodeList) result;

Node node = list.item(0); // <-- THIS ONE HERE

Log.d("LIST", Integer.toString(list.getLength()));
ret = node.getTextContent();
}

然后将获取第一个(list.item(0)),这就是您所得到的。

看来您的“问题”与 Java 逻辑有关,而不是 XPath。

关于java - XQUERY JAVA 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10805333/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com