【问题标题】:Tdd parsing node value errorstdd解析节点值错误
【发布时间】:2014-05-28 21:46:35
【问题描述】:

我正在尝试创建一个测试来解析谷歌距离矩阵 api 的距离值。现在它全部在一个字符串中,所以我不必连接到 api(发布了一个指向 xml 读数的链接。我在解析节点的值时遇到问题。我把所有东西都放在一个字符串中。

http://maps.googleapis.com/maps/api/distancematrix/xml?origins=Muncie&destinations=Miami&language=en-EN&sensor=false&language=en-EN&units=imperial

这是我的测试,当我运行它时,结果是 null 而不是 64275

public class GoogleDistanceMatrixXMLTest {

private static final String DISTANCE_XML_STRING = "<?xml version=\"1.0\"?><DistanceMatrixResponse><status>OK</status><origin_address>Muncie, IN, USA</origin_address><destination_address>Miami, FL, USA</destination_address><row><element><status>OK</status><duration><value>64275</value><text>17 hours 51 mins</text></duration><distance><value>1961951</value><text>1,219 mi</text></distance></element></row></DistanceMatrixResponse>";

private Document document;

@Before
public void setUp() throws ParserConfigurationException,
SAXException, IOException{
    InputSource source = createInputSourceFromSampleXMLData();
    document = parseXMLFrom(source);
}

private InputSource createInputSourceFromSampleXMLData() {
    StringReader stringReader = new StringReader(DISTANCE_XML_STRING);
    return new InputSource(stringReader);
}

private Document parseXMLFrom(InputSource source) throws ParserConfigurationException, SAXException, IOException {
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    DocumentBuilder documentBuilder = factory.newDocumentBuilder();
    return documentBuilder.parse(source);
}
@Test
public void testRetrieveDurationValue() throws ParserConfigurationException, SAXException, IOException {
    String durationChildNodeValue = document.getFirstChild().getChildNodes().item(3).getFirstChild().getChildNodes().item(1).getFirstChild().getNodeValue();
    Assert.assertEquals("64275", durationChildNodeValue);
}

【问题讨论】:

    标签: java xml parsing dom tdd


    【解决方案1】:
    String durationChildNodeValue = document.getFirstChild()...;
    

    应该是

    String durationChildNodeValue = document.getDocumentElement()...;
    

    不保证文档元素是第一个子元素。处理指令可能是第一个孩子。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-03
      • 2017-01-04
      • 2018-07-28
      • 1970-01-01
      • 2013-03-28
      • 2019-12-16
      • 1970-01-01
      相关资源
      最近更新 更多