@Test
  public void xmlPathWorksWithSoap() throws Exception {
    // Given
    String soap =
        "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n"
            + "<env:Envelope \n"
            + "    xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\" \n"
            + "    xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" \n"
            + "    xmlns:env=\"http://schemas.xmlsoap.org/soap/envelope/\" \n"
            + "    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n"
            + "    <env:Header/>\n"
            + "\n"
            + "<env:Body>\n"
            + "    <n1:importProjectResponse \n"
            + "        xmlns:n1=\"n1\" \n"
            + "        xmlns:n2=\"n2\" \n"
            + "        xsi:type=\"n2:ArrayOfProjectImportResultCode\">\n"
            + "        <n2:ProjectImportResultCode>\n"
            + "            <n2:code>1</n2:code>\n"
            + "            <n2:message>Project 'test1' import was successful.</n2:message>\n"
            + "        </n2:ProjectImportResultCode>\n"
            + "    </n1:importProjectResponse>\n"
            + "</env:Body></env:Envelope>";
    // When

    XmlPath xmlPath = new XmlPath(soap);

    // Then
    assertThat(
        xmlPath.getString("Envelope.Body.importProjectResponse.ProjectImportResultCode.code"),
        equalTo("1"));
  }
  @Test
  public void doesntNeedToEscapeListsWithHyphenWithoutBrackets() throws Exception {
    // Given
    String xml = "<root><some-list>one</some-list><some-list>two</some-list></root>";

    // When
    XmlPath xmlPath = XmlPath.from(xml);

    // Then
    assertThat(xmlPath.getString("root.some-list[0]"), equalTo("one"));
  }
  @Test
  public void disableDtdValidationWorks() throws Exception {
    // Given
    String xml =
        "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
            + "<!DOCTYPE LegacyService SYSTEM \"http://example.com/dtd/NonExistent.dtd\">\n"
            + "<LegacyService>Text</LegacyService>";

    // When
    final XmlPath xmlPath =
        new XmlPath(xml).using(xmlPathConfig().with().disableLoadingOfExternalDtd());

    // Then
    assertThat(xmlPath.getString("LegacyService"), equalTo("Text"));
  }
Beispiel #4
0
  @Test
  public void setting_features_works() throws Exception {
    // Given
    String xml =
        "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
            + "<!DOCTYPE LegacyService SYSTEM \"http://example.com/dtd/NonExistent.dtd\">\n"
            + "<LegacyService>Text</LegacyService>";

    Map<String, Boolean> features = new HashMap<String, Boolean>();
    features.put("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
    features.put("http://xml.org/sax/features/namespaces", false);

    // When
    final XmlPath xmlPath = new XmlPath(xml).using(xmlPathConfig().with().features(features));

    // Then
    assertThat(xmlPath.getString("LegacyService"), equalTo("Text"));
  }
  @Test
  public void setting_feature_works() throws Exception {
    // Given
    String xml =
        "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
            + "<!DOCTYPE LegacyService SYSTEM \"http://example.com/dtd/NonExistent.dtd\">\n"
            + "<LegacyService>Text</LegacyService>";

    // When
    final XmlPath xmlPath =
        new XmlPath(xml)
            .using(
                xmlPathConfig()
                    .with()
                    .feature(
                        "http://apache.org/xml/features/nonvalidating/load-external-dtd", false)
                    .feature("http://apache.org/xml/features/disallow-doctype-decl", false));

    // Then
    assertThat(xmlPath.getString("LegacyService"), equalTo("Text"));
  }