В Java, как я могу разобрать XML как строку вместо файла?
246413 просмотра
6 ответа
У меня есть следующий код:
DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(xmlFile);
Как я могу получить его для анализа XML, содержащегося в строке, а не в файле?
Автор: Dewayne Источник Размещён: 13.11.2019 11:48Ответы (6)
470 плюса
У меня есть эта функция в моей базе кода, это должно работать для вас.
public static Document loadXMLFromString(String xml) throws Exception
{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
InputSource is = new InputSource(new StringReader(xml));
return builder.parse(is);
}
также увидеть этот похожий вопрос
Автор: shsteimer Размещён: 18.02.2009 06:1016 плюса
Одним из способов является использование версии синтаксического анализа, которая принимает InputSource, а не файл
SAX InputSource может быть создан из объекта Reader. Один объект Reader является StringReader
Так что-то вроде
parse(new InputSource(new StringReader(myString))) may work.
Автор: Uri
Размещён: 18.02.2009 05:59
5 плюса
Javadocs показывают, что метод разбора перегружен.
Создайте StringStream или InputSource, используя вашу строку XML, и вы должны быть установлены.
Автор: duffymo Размещён: 18.02.2009 05:584 плюса
Преобразуйте строку в InputStream и передайте ее DocumentBuilder.
final InputStream stream = new ByteArrayInputStream(string.getBytes(StandardCharsets.UTF_8));
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
builder.parse(stream);
РЕДАКТИРОВАТЬ
В ответ на комментарий Bendin относительно кодировки, см. Ответ shsteimer на этот вопрос.
2 плюса
Я использую этот метод
public Document parseXmlFromString(String xmlString){
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
InputStream inputStream = new ByteArrayInputStream(xmlString.getBytes());
org.w3c.dom.Document document = builder.parse(inputStream);
return document;
}
Автор: Yasir Shabbir Choudhary
Размещён: 07.09.2016 09:48
0 плюса
Вы можете использовать пакет Scilca XML Progession, доступный на GitHub.
XMLIterator xi = new VirtualXML.XMLIterator("<xml />");
XMLReader xr = new XMLReader(xi);
Document d = xr.parseDocument();
Автор: Shukant Pal
Размещён: 10.10.2016 07:25
Вопросы из категории :
- java В чем разница между int и Integer в Java и C #?
- java Как я могу определить IP моего маршрутизатора / шлюза в Java?
- java Каков наилучший способ проверки XML-файла по сравнению с XSD-файлом?
- java Как округлить результат целочисленного деления?
- xml Обработка XML в Python
- xml Removing nodes from an XmlDocument
- xml Как анализировать XML-файлы?
- string В чем разница между строкой и строкой в ??C #?
- string Почему в Ruby нет реального StringBuffer или StringIO?
- string Преобразовать строку в перечисление в C #
- string Преобразование списка <Integer> в список <String>
- file Как получить список каталогов в C?
- file Динамически загружать файл JavaScript
- file Find number of files with a specific extension, in all subdirectories
- file Поиск и замена строки в файле в Python
- parsing Как вручную проанализировать число с плавающей запятой из строки
- parsing Какой лучший способ прочитать и проанализировать большой текстовый файл по сети?
- parsing Каков наилучший способ для анализа времени в объект Date из пользовательского ввода в Javascript?
- parsing SQL: parse the first, middle and last name from a fullname field