Я создаю приложение для Android, которое общается с веб-сервером и борется со следующим сценарием:
Учитывая ОДНУ строку XML в строке, например:
"<test one="1" two="2" />"
Я хотел бы извлечь значения в HashMap, чтобы:
map.get("one") = "1"
map.get("two") = "2"
Я уже могу сделать это с полным XML-документом, используя SAX Parser, это жалуется, когда я пытаюсь просто передать ему вышеприведенную строку с помощью MalformedUrlException: протокол не найден
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder;
Document doc = null;
builder = factory.newDocumentBuilder();
doc = builder.parse("<test one="1" two="2" />"); //here
Я понимаю, что некоторое регулярное выражение может сделать это, но Id действительно делает это правильно.
Такое же поведение можно найти по адресу http://metacpan.org/pod/XML::Simple#XMLin, который используется веб-сервером.
Может ли кто-нибудь помочь? Спасибо
DocumentBuilder.parse(String)
обрабатывает строку как URL-адрес. Попробуйте это вместо этого:
Document doc = builder.parse(new InputSource(new StringReader(text)));
(где text
содержит XML, конечно).