fix(logging): Fix reading attribute values
This commit is contained in:
parent
8e696f8a2c
commit
5c1db8c339
@ -352,11 +352,14 @@ public class NativeXmlReader implements Closeable {
|
|||||||
throw unexpectedTokenError("ATTRIBUTE_VALUE");
|
throw unexpectedTokenError("ATTRIBUTE_VALUE");
|
||||||
}
|
}
|
||||||
char quote = buffer[pos++];
|
char quote = buffer[pos++];
|
||||||
return readUntil((c, i) -> {
|
String result = readUntil((c, i) -> {
|
||||||
if (!lenient && c < 0x20 && c != 0x09) throw syntaxError("Control character in attribute value");
|
if (!lenient && c < 0x20 && c != 0x09) throw syntaxError("Control character in attribute value");
|
||||||
if (c == '<') throw syntaxError("Expected " + quote + " but was '<'");
|
if (c == '<') throw syntaxError("Expected " + quote + " but was '<'");
|
||||||
return c == quote;
|
return c == quote;
|
||||||
}, true);
|
}, true);
|
||||||
|
pos++;
|
||||||
|
peeked = PEEKED_NONE;
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private String readReference() throws IOException {
|
private String readReference() throws IOException {
|
||||||
|
@ -30,7 +30,7 @@ import static org.junit.Assert.assertThrows;
|
|||||||
import static org.junit.Assert.fail;
|
import static org.junit.Assert.fail;
|
||||||
|
|
||||||
@SuppressWarnings("resource")
|
@SuppressWarnings("resource")
|
||||||
public final class BaseXmlReaderTest {
|
public final class NativeXmlReaderTest {
|
||||||
/**
|
/**
|
||||||
* Test for issue 212.
|
* Test for issue 212.
|
||||||
*/
|
*/
|
||||||
@ -168,6 +168,46 @@ public final class BaseXmlReaderTest {
|
|||||||
assertThat(reader.hasNext()).isFalse();
|
assertThat(reader.hasNext()).isFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testReadAttributes() throws IOException {
|
||||||
|
NativeXmlReader reader = new NativeXmlReader(reader("<tag a='1' b='2' c='3'/>"));
|
||||||
|
assertThat(reader.beginTag()).isEqualTo("tag");
|
||||||
|
assertThat(reader.nextAttributeName()).isEqualTo("a");
|
||||||
|
assertThat(reader.nextAttributeValue()).isEqualTo("1");
|
||||||
|
assertThat(reader.nextAttributeName()).isEqualTo("b");
|
||||||
|
assertThat(reader.nextAttributeValue()).isEqualTo("2");
|
||||||
|
assertThat(reader.nextAttributeName()).isEqualTo("c");
|
||||||
|
assertThat(reader.nextAttributeValue()).isEqualTo("3");
|
||||||
|
assertThat(reader.endTag()).isEqualTo("tag");
|
||||||
|
assertThat(reader.peek()).isEqualTo(XmlToken.EOF);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testReadAttributesWithBody() throws IOException {
|
||||||
|
NativeXmlReader reader = new NativeXmlReader(reader("<tag a='1' b='2' c='3'>body<secondElement />body2</tag>"));
|
||||||
|
assertThat(reader.beginTag()).isEqualTo("tag");
|
||||||
|
assertThat(reader.peek()).isEqualTo(ATTRIBUTE_NAME);
|
||||||
|
assertThat(reader.nextAttributeName()).isEqualTo("a");
|
||||||
|
assertThat(reader.peek()).isEqualTo(ATTRIBUTE_VALUE);
|
||||||
|
assertThat(reader.nextAttributeValue()).isEqualTo("1");
|
||||||
|
assertThat(reader.peek()).isEqualTo(ATTRIBUTE_NAME);
|
||||||
|
assertThat(reader.nextAttributeName()).isEqualTo("b");
|
||||||
|
assertThat(reader.peek()).isEqualTo(ATTRIBUTE_VALUE);
|
||||||
|
assertThat(reader.nextAttributeValue()).isEqualTo("2");
|
||||||
|
assertThat(reader.nextAttributeName()).isEqualTo("c");
|
||||||
|
assertThat(reader.nextAttributeValue()).isEqualTo("3");
|
||||||
|
assertThat(reader.peek()).isEqualTo(TEXT);
|
||||||
|
assertThat(reader.nextText()).isEqualTo("body");
|
||||||
|
assertThat(reader.peek()).isEqualTo(BEGIN_TAG);
|
||||||
|
assertThat(reader.beginTag()).isEqualTo("secondElement");
|
||||||
|
assertThat(reader.peek()).isEqualTo(END_TAG);
|
||||||
|
assertThat(reader.endTag()).isEqualTo("secondElement");
|
||||||
|
assertThat(reader.nextText()).isEqualTo("body2");
|
||||||
|
assertThat(reader.endTag()).isEqualTo("tag");
|
||||||
|
assertThat(reader.peek()).isEqualTo(XmlToken.EOF);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
// @Test
|
// @Test
|
||||||
// public void testHelloWorld() throws IOException {
|
// public void testHelloWorld() throws IOException {
|
||||||
// String json =
|
// String json =
|
Loading…
Reference in New Issue
Block a user