Java 如何获取元素ID中的属性
我有以下XML数据。我希望获得仅与该位置相关的lat和lng值,而不是西南部。我怎样才能做到这一点,而不必阅读《西南》Java 如何获取元素ID中的属性,java,xml,xml-parsing,sax,Java,Xml,Xml Parsing,Sax,我有以下XML数据。我希望获得仅与该位置相关的lat和lng值,而不是西南部。我怎样才能做到这一点,而不必阅读《西南》 `<geometry> <location> <lat>51.5739894</lat> <lng>-0.1499698</lng> </location> <southwest> <lat>51.5727314</l
`<geometry>
<location>
<lat>51.5739894</lat>
<lng>-0.1499698</lng>
</location>
<southwest>
<lat>51.5727314</lat>
<lng>-0.1511809</lng>
</southwest>
</geometry>`
对于这种特殊情况,如果我是您,我将使用
org.json
parse as JSONObject来查询每个节点
JSONObject jsonObject = XML.toJSONObject(xml).getJSONObject("geometry").getJSONObject("location");
String lat = jsonObject.getString("lat");
String lng = jsonObject.getString("lng");
对于这种特殊情况,如果我是您,我将使用
org.json
parse as JSONObject来查询每个节点
JSONObject jsonObject = XML.toJSONObject(xml).getJSONObject("geometry").getJSONObject("location");
String lat = jsonObject.getString("lat");
String lng = jsonObject.getString("lng");
如果xml不是很大,那么使用
XPathFactory
的方法也可以。否则,使用SAX解析器。但是在编写SAX解析器时,您需要进行额外的处理,特别是当您遇到诸如我只需要位置的lat
值这样的条件时
我将使用xpath方法,使用非常简单,无需使用第三方。这可以通过java.xml完成*
代码为:
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse( new File( ".//input.xml" ) );
XPathFactory xPathFactory = XPathFactory.newInstance();
XPath xpath = xPathFactory.newXPath();
XPathExpression latExpr = xpath.compile( "//location/lat" );
XPathExpression lngExpr = xpath.compile( "//location/lng" );
Object exprEval = latExpr.evaluate( doc, XPathConstants.NUMBER );
if ( exprEval != null )
{
System.out.println( "Location's lat value is :" + exprEval );
}
exprEval = lngExpr.evaluate( doc, XPathConstants.NUMBER );
if ( exprEval != null )
{
System.out.println( "Location's lng value is :" + exprEval );
}
input.xml
包含您的xml。
它使用xpath://location/lat
,这意味着获取父项为location
的lat
的值。
并将xpath计算为一个数字
输出为:
Location's lat value is :51.5739894
Location's lng value is :-0.1499698
如果xml不是很大,那么使用XPathFactory
的方法也可以。否则,使用SAX解析器。但是在编写SAX解析器时,您需要进行额外的处理,特别是当您遇到诸如我只需要位置的lat
值这样的条件时
我将使用xpath方法,使用非常简单,无需使用第三方。这可以通过java.xml完成*
代码为:
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse( new File( ".//input.xml" ) );
XPathFactory xPathFactory = XPathFactory.newInstance();
XPath xpath = xPathFactory.newXPath();
XPathExpression latExpr = xpath.compile( "//location/lat" );
XPathExpression lngExpr = xpath.compile( "//location/lng" );
Object exprEval = latExpr.evaluate( doc, XPathConstants.NUMBER );
if ( exprEval != null )
{
System.out.println( "Location's lat value is :" + exprEval );
}
exprEval = lngExpr.evaluate( doc, XPathConstants.NUMBER );
if ( exprEval != null )
{
System.out.println( "Location's lng value is :" + exprEval );
}
input.xml
包含您的xml。
它使用xpath://location/lat
,这意味着获取父项为location
的lat
的值。
并将xpath计算为一个数字
输出为:
Location's lat value is :51.5739894
Location's lng value is :-0.1499698
谢谢,我没有使用Json解析器,但我会尝试一下。谢谢,我没有使用Json解析器,但我会尝试一下。谢谢,这是一个非常有趣的例子answer@AnthonyJ如果你发现答案是有用的,考虑一下投票。谢谢。谢谢,这是一个非常有趣的节目answer@AnthonyJ如果你发现答案是有用的,考虑一下投票。谢谢