как разбирать XML-объект в JAVA [дубликат]

Что касается второго вопроса: push_ref принимает ссылку как параметр, и вы не можете иметь ссылку на static const memeber класса / struct. После вызова static_cast создается временная переменная. И ссылка на этот объект может быть передана, все работает отлично.

Или, по крайней мере, мой коллега, который разрешил это, сказал.

213
задан bluish 15 March 2011 в 11:16
поделиться

6 ответов

У меня есть эта функция в моей базе кода, это должно сработать для вас.

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);
}

также см. этот аналогичный вопрос

422
ответ дан Community 18 August 2018 в 11:17
поделиться
  • 1
    @shsteimer Я передаю строку xml и возвращает null. Это не исключение. Что должно быть неправильно? – sattu 28 June 2013 в 21:47
  • 2
    @sattu: Вы должны опубликовать его как новый вопрос. Это очень сложно сказать, не видя свой код. – Alexander Malakhov 11 July 2013 в 09:02
  • 3
    большое спасибо, спасли мне ряд строк кода, я преобразовывал его обратно в текст, но я знал, что есть лучший способ! – nkuebelbeck 8 August 2013 в 13:50
  • 4
    если у меня есть & lt; XML & gt; он возвращает пустой узел, что я могу сделать? – Dejell 29 January 2014 в 09:46

Один из способов - использовать версию синтаксического анализа, которая использует InputSource, а не файл

. Источник SAX InputSource может быть создан из объекта Reader. Один объект Reader является StringReader

. Так что, например,

parse(new InputSource(new StringReader(myString))) may work. 
16
ответ дан Abimaran Kugathasan 18 August 2018 в 11:17
поделиться

Преобразовать строку в InputStream и передать ее в DocumentBuilder

final InputStream stream = new ByteArrayInputStream(string.getBytes(StandardCharsets.UTF_8));
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
builder.parse(stream);

Ответ EDITIn на комментарий bendin относительно кодирования, см. ответ shsteimer на этот вопрос.

4
ответ дан Christophe Roussy 18 August 2018 в 11:17
поделиться
  • 1
    Я бы предпочел StringReader, потому что он избегает String.getBytes (), но это должно обычно работать также. – Michael Myers♦ 18 February 2009 в 19:19
  • 2
    Когда вы вызываете getBytes (), какую кодировку вы ожидаете использовать? Как вы говорите парсеру XML, который его кодирует? Вы ожидаете, что это угадаете? Что происходит, когда вы находитесь на платформе, где кодировка по умолчанию не является UTF-8? – bendin 18 February 2009 в 19:38

javadocs показывают, что метод parse перегружен.

Создайте StringStream или InputSource, используя строковый XML, и вы должны быть установлены.

5
ответ дан duffymo 18 August 2018 в 11:17
поделиться

Вы можете использовать пакет Scilca XML Progession, доступный в GitHub.

XMLIterator xi = new VirtualXML.XMLIterator("<xml />");
XMLReader xr = new XMLReader(xi);
Document d = xr.parseDocument();
0
ответ дан Sukant Kumar 18 August 2018 в 11:17
поделиться

Я использую этот метод

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;
}
1
ответ дан Yasir Shabbir Choudhary 18 August 2018 в 11:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: