簡體   English   中英

如何從xml文件中獲取值和路徑?

[英]How to get value and path from xml file?

我正在使用 XMLDog 從 xml 文件中讀取值。 問題是我不斷得到空值。

這是xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<persons>
  <person>
    <name>John Doe</name>
    <age>30</age>
  </person>
  <person>
    <name>Jane Doe</name>
    <age>30</age>
  </person>
</persons>

我正在使用的代碼:

final DefaultNamespaceContext nsContext = new DefaultNamespaceContext();
final XMLDog dog = new XMLDog(nsContext);

final Expression expression = dog.addXPath("/persons/person/name");
final XPathResults result = dog.sniff(new InputSource("/mnt/data-disk/persons.xml"));

final List<NodeItem> list = (List<NodeItem>)result.getResult(expression);
list.forEach(item -> System.out.println("Path: " + item.location + ", value: " + item.value));

這就是我得到的:

Path: /persons[1]/person[1]/name[1], value: null
Path: /persons[1]/person[2]/name[1], value: null

我需要幫助弄清楚為什么我的價值為null

在我的項目中,我需要確切的路徑和值。 有沒有其他方法可以實現這一目標?

XPath 丟失: /text() 我已將其更改為: /persons/person/name/text() 現在輸出正常:

Path: /persons[1]/person[1]/name[1]/text()[1], value: John Doe
Path: /persons[1]/person[2]/name[1]/text()[1], value: Jane Doe

從文檔:

DOM 結果

默認情況下,XMLDog 不會為結果構造 dom 節點。 您可以按如下方式配置 DOM 結果:

import package jlibs.xml.sax.dog.sniff.Event;

Event event = dog.createEvent();
results = new XPathResults(event);
event.setListener(results);
event.setXMLBuilder(new DOMBuilder());
dog.sniff(event, new InputSource("note.xml"));

List<NodeItem> items = (List<NodeItem>)results.getResult(xpath1)

您是否有可能在未創建 DOM 的情況下嘗試遍歷 DOM?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM