[java] Java에서 XML을 파일 대신 문자열로 구문 분석하는 방법은 무엇입니까?

다음 코드가 있습니다.

DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(xmlFile);

파일 대신 문자열에 포함 된 XML을 구문 분석하려면 어떻게해야합니까?



답변

내 코드베이스 에이 기능이 있습니다.이 기능이 도움이 될 것입니다.

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

이 비슷한 질문을 참조하십시오


답변

한 가지 방법은 파일이 아닌 InputSource를 사용하는 구문 분석 버전을 사용하는 것입니다.

SAX 입력 소스는 Reader 객체로 구성 할 수 있습니다. 하나의 Reader 객체는 StringReader입니다

그래서 같은

parse(new InputSource(new StringReader(myString))) may work. 


답변

javadocs 는 구문 분석 메소드가 과부하되었음을 보여줍니다.

문자열 XML을 사용하여 StringStream 또는 InputSource를 작성하면 설정해야합니다.


답변

문자열을 InputStream으로 변환하여 DocumentBuilder에 전달

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

편집
에 대응 bendin ‘인코딩에 관한 코멘트는, 참조 shsteimer 이 질문의 답을’.


답변

이 방법을 사용하고 있습니다

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


답변

GitHub에서 제공되는 Scilca XML Progession 패키지를 사용할 수 있습니다.

XMLIterator xi = new VirtualXML.XMLIterator("<xml />");
XMLReader xr = new XMLReader(xi);
Document d = xr.parseDocument();


답변

그냥 입력

this.file = File("your xml file path")
this.document = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(file)