xml dom解析器在java中按名称查找标签

2024-01-09

我有一个 xml:

我只想获取城市和温度,我尝试了以下方法:

HttpParams httpParameters = new BasicHttpParams();

HttpClient httpclient = new DefaultHttpClient(httpParameters);
HttpGet httpget = new HttpGethttp://netmobileag.accu weather.com/widget/netmobileag/weather-data.asp?slat=48.04960&slon=21.71420&metric=1");

HttpResponse response = httpclient.execute(httpget);

InputStream in = response.getEntity().getContent();

String res = "";

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new InputSource(in));
doc.getDocumentElement().normalize();

NodeList loc = doc.getElementsByTagName("local");

for (int i = 0; i < loc.item(0).getChildNodes().getLength(); i++) {
    res = res + "\n" + loc.item(0).getChildNodes().item(0).getNodeValue();
}

但资源将是

#text
#text
 ...

总结25x。如何获取城市和温度值?


这里正确的做法是实际使用 Xpath。您是否使用 Regex 或 SQL 在数据库中进行搜索?同样,在 XML 文件中的搜索是通过 XPath 完成的。

 package xpath;

 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.xpath.XPath;
 import javax.xml.xpath.XPathConstants;
 import javax.xml.xpath.XPathExpression;
 import javax.xml.xpath.XPathFactory;

 import org.w3c.dom.Document;
 import org.w3c.dom.NodeList;

 public class SimpleParsing {
public static void main(String[] args) throws Exception {
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    factory.setNamespaceAware(false); // never forget this!
    DocumentBuilder builder = factory.newDocumentBuilder();

    Document doc = builder.parse("/Users/eugenrabii/Desktop/MyFile.xml");

    XPathFactory xPathFactory = XPathFactory.newInstance();
    XPath xpath = xPathFactory.newXPath();

    XPathExpression xPathExpression = xpath.compile("//city/text()");

    Object result = xPathExpression.evaluate(doc, XPathConstants.NODESET);

    System.out.println(result.toString());

    NodeList nodes = (NodeList) result;

    System.out.println(nodes.getLength());
    for (int i = 0; i < nodes.getLength(); i++) {
        System.out.println(nodes.item(i).getNodeValue()); 
    }
}

}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

xml dom解析器在java中按名称查找标签 的相关文章

随机推荐

  • 如何让console.log输出getter结果而不是字符串“[Getter/Setter]”?

    在此代码中 function Cls this id 0 Object defineProperty this id get function return this id set function id this id id enumer
  • .NET 主要版本和发布分支的 git 分支策略

    对于包含多个类库的 NET 项目 我当前使用以下 git 分支策略 feature 1 master v PR v release 7 0 v I branch
  • iPhone 7/7plus 上的空 snapshotView

    我的第一个问题是 最近我将 Xcode 更新到 8 并且resizableSnapshotView该方法在某些模拟器上无法正常工作 snapshotView 在所有 iOS9 10 的测试设备和 iPhone6s 下的模拟器上都运行良好 但
  • Qt 安卓.获取设备屏幕分辨率

    我正在 Android 设备上使用 qt 5 3 进行开发 我无法获取屏幕分辨率 对于旧的 qt 5 版本 此代码有效 QScreen screen QApplication screens at 0 largh screen gt ava
  • 通过合并日期时间和日期列上的两个 DF 查找昨天的高价

    我正在尝试合并两个 df 其中一个 df 有一个datetime列 另一个只有一个date柱子 我的申请是找到昨天的high使用 OHLC 数据集的价格 我在下面附加了一些起始代码 但我将描述我正在寻找的内容 鉴于这种intraday数据集
  • 从 Git 中删除过时的提交

    我已经进行了一些测试提交 以测试提交挂钩 并且始终将索引重置为我最后一次正常提交 现在这些过时的提交仍然存在 gt git reflog fcdabf7 HEAD 0 reset moving to fcdabf7e01845d6f000f
  • 如何在javascript中完全获取具有重复键的JSON

    我试图从 url 获取 JSON 但在响应对象中重复的键被删除 有没有什么方法可以完全获取它而不删除重复的键 这是我的js代码 document ready function var s getJSON new json console l
  • 关键帧不是关键帧? AV_PKT_FLAG_KEY 未解码为 AV_PICTURE_TYPE_I

    解码标志中包含 AV PKT FLAG KEY 的数据包后 我原本期望得到 I 帧 但结果却得到了 P 帧 拨打电话后 avcodec decode video2 codecCtx frame frameFinished packet mp
  • iOS 呈现动画为“推”的视图控制器(左右动画)

    目前 我有一个视图控制器呈现其他视图控制器 我想做的是重新创建推送视图控制器时使用的默认动画 我目前的做法是 FirstViewController IBAction private func push sender AnyObject l
  • 如何捕获 ASCX 控件(而不是隐藏代码)引发的异常?

    我有一个很大的 ASPX 页面 其中包含许多 ASCX 控件 如果控件引发异常 它应该记录异常并仅隐藏其自身 所有其他控件仍应呈现 如何处理从前端文件 ASCX 而不是代码隐藏 引发的各个 ASCX 的异常 例如 尝试使用以下方法引用无效属
  • 算法 CRC-12

    我正在尝试对 12 位 CRC 和算法执行 crc table 但总是得到错误的结果 你能帮助我吗 要创建 crc 表 我尝试 void crcInit void unsigned short remainder int dividend
  • 为什么我的 Perl 代码中会收到“调用得太早以检查原型”警告?

    我有一个像这样的 Perl 文件 use strict f1 sub f3 f2 sub f1 sub f2 简而言之 f1在定义之前被调用 因此 Perl 发出警告 f1 调用得太早 无法检查原型 但情况也是如此f2 唯一的区别是它是从另
  • 如何抑制整个命名空间文件的 StyleCop 警告

    我正在使用 Style Cop 版本 4 7 全局抑制并不适用于选定命名空间的每个成员 我在同一命名空间 StyleCopSample Test 中有两个文件 当我在第一个文件中设置抑制消息时 仅针对该文件抑制消息 但第二个文件仍然会收到警
  • R 裁剪栅格的无数据

    我想裁剪一些栅格的无数据部分 图像的示例1 https i stack imgur com hkr4d png其中无数据为黑色 无需手动定义范围 任何想法 您可以使用trim删除只有外部行和列NA values library raster
  • 同时是 Kotlin 成员和扩展

    为了更多地了解 Kotlin 并使用它 我正在开发一个示例 Android 应用程序 我可以在其中尝试不同的事情 然而 即使在搜索该主题一段时间后 我仍无法找到以下问题的正确答案 让我们在 View 类上声明一个 虚拟 扩展函数 fun V
  • 当我的程序出现分段错误时,即使设置了 RUST_BACKTRACE=1,为什么我也得不到回溯?

    我想查看随机分段错误的回溯 所以我设置了RUST BACKTRACE 1环境变量 通常它会打印回溯信息 但这次不打印 为什么不RUST BACKTRACE work RUST BACKTRACE 1 target debug grin mi
  • 重写 Javascript Map 的相等函数

    我想在 Javascript 中创建一个 Map 字典 其中键是数字数组 值是某个对象 我想从地图中检索以前使用相同数组内容存储的值 即 如果我有一个包含某些内容的数组 我想检索以前为具有相同内容的数组存储的值 如果有 在大多数其他语言中
  • 异步/等待和缓存

    我的服务层正在缓存大量对 memcached 的 Db 请求 这是否导致无法使用 Async Await 例如我怎么能等待这个 public virtual Store GetStoreByUsername string username
  • NSString 内部结构 - 长度如何工作?

    我有一个关于 NSString 内部结构的问题 我想检查字符串长度 基本上我想知道 NSString 是否知道它的长度 每次计数 计数并缓存结果 我应该存储它的长度并每次计算或调用长度方法吗 为了测试一个字符串 我可以测试 nil 或询问它
  • xml dom解析器在java中按名称查找标签

    我有一个 xml 我只想获取城市和温度 我尝试了以下方法 HttpParams httpParameters new BasicHttpParams HttpClient httpclient new DefaultHttpClient h