string فيجوال - في Java ، كيف يمكنني تحليل XML كسلاسل بدلاً من ملف؟




للصف جاهزة (6)

قم بتحويل السلسلة إلى InputStream وتمريرها إلى DocumentBuilder

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

تصحيح
ردا على تعليق بيندين بخصوص الترميز ، انظر جواب shsteimer على هذا السؤال.

لدي الكود التالي:

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

انظر أيضا هذا السؤال مماثل


يمكنك استخدام حزمة Scilca XML Progession المتوفرة في GitHub.

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

إحدى الطرق لاستخدام إصدار تحليل يأخذ InputSource بدلاً من ملف

يمكن إنشاء SAX InputSource من كائن قارئ. كائن قارئ واحد هو StringReader

شيء من هذا القبيل

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

أنا أستخدم هذه الطريقة

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

أعتقد أن ما يقوله Ignacio هو أن ملف JSON الخاص بك غير صحيح. لديك [] متى يجب أن يكون لديك {} . [] للقوائم ، {} مخصصة للقواميس.

إليك كيفية ظهور ملف JSON ، ولن يتم تحميل ملف JSON لي:

{
    "maps": [
        {
            "id": "blabla",
            "iscategorical": "0"
        },
        {
            "id": "blabla",
            "iscategorical": "0"
        }
    ],
    "masks": {
        "id": "valore"
    },
    "om_points": "value",
    "parameters": {
        "id": "valore"
    }
}

ثم يمكنك استخدام الرمز الخاص بك:

import json
from pprint import pprint

data = json.load(open('data.json'))

pprint(data)

باستخدام البيانات ، يمكنك الآن أيضًا العثور على قيم مثل:

data["maps"][0]["id"]
data["masks"]["id"]
data["om_points"]

جرب ذلك واكتشف ما إذا كان يبدأ في المعنى.





java xml string file parsing