从XML创建和写入文件

时间:2014-10-12 12:36:01

标签: java android xml

我有关于文章的XML

<ARTICLE ID="74">
<ARTICLE_CATEGORY_ID>1</ARTICLE_CATEGORY_ID >
<ARTICLE_NAME>......</ARTICLE_NAME >
<ARTICLE_EXTENSION>pdf</ARTICLE_EXTENSION >
<ARTICLE_BYTE>[B@6d78f375</ARTICLE_BYTE >
<ARTICLE_DATE>2014-10-11 00:00:00.0</ARTICLE_DATE >
<ARTICLE_ACTIVE>1</ARTICLE_ACTIVE>
</MAKALE>

我想创建文件,并写下ARTICLE_BYTE,但我不能这样做,似乎字节似乎是字母串,所以我不知道我该怎么做?谢谢你的帮助

// EDIT 对不起,我是一个非常新的stackoverflow .. 是的,这是来自我写过的程序。

该程序代码的一部分

try {
        DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder docBuilder = docFactory.newDocumentBuilder();

        // XML Kok Ismi
        Document doc = docBuilder.newDocument();
        Element rootElement = doc.createElement("ARTICLES");
        doc.appendChild(rootElement);

        for (Nesne nesne : userList) {
            // ARTICLE ELEMENT
            Element ARTICLE_ID= doc.createElement("ARTICLE ");
            rootElement.appendChild(ARTICLE_ID);

            //ID
            Attr attr = doc.createAttribute("ID");
            attr.setValue(String.valueOf(nesne.getArticleID()));
            MAKALE_ID.setAttributeNode(attr);

            //ARTICLE_CATEGORY_ID
            Element ARTICLE_CATEGORY_ID= doc.createElement("ARTICLE_CATEGORY_ID");
                 ARTICLE_CATEGORY_ID.appendChild(doc.createTextNode(String.valueOf(nesne.getARTICLE_CATEGORY_ID())));
            ARTICLE_ID.appendChild(ARTICLE_CATEGORY_ID);
            //[ARTICLE_NAME]
            Element ARTICLE_NAME= doc.createElement("ARTICLE_NAME");
            ARTICLE_NAME.appendChild(doc.createTextNode(nesne.getARTICLE_NAME()));
            ARTICLE_ID.appendChild(ARTICLE_NAME);

            //[ARTICLE_EXTENSION]
            Element ARTICLE_EXTENSION= doc.createElement("ARTICLE_EXTENSION");
            ARTICLE_EXTENSION.appendChild(doc.createTextNode(nesne.getARTICLE_EXTENSION()));
            ARTICLE_ID.appendChild(ARTICLE_EXTENSION);

            //[ARTICLE_BYTE]
            Element ARTICLE_BYTE= doc.createElement("ARTICLE_BYTE");
            ARTICLE_BYTE.appendChild(doc.createTextNode(nesne.getARTICLE_BYTE().toString()));
            ARTICLE_ID.appendChild(ARTICLE_BYTE);

            //[ARTICLE_DATE]
            Element ARTICLE_DATE = doc.createElement("ARTICLE_DATE");
            ARTICLE_DATE.appendChild(doc.createTextNode(nesne.getARTICLE_DATE()));
            ARTICLE_ID.appendChild(ARTICLE_DATE);

            //[ARTICLE_ACTIVE]
            Element ARTICLE_ACTIVE= doc.createElement("ARTICLE_ACTIVE");
          ARTICLE_ACTIVE.appendChild(doc.createTextNode(String.valueOf(nesne.getArticleActive())));
            ARTICLE_ID.appendChild(ARTICLE_ACTIVE);

        }
        // write the content into xml file
        TransformerFactory transformerFactory = TransformerFactory.newInstance();
        Transformer transformer = transformerFactory.newTransformer();
        DOMSource source = new DOMSource(doc);
        StreamResult result = new StreamResult(new File("dosyalar.xml"));

        // Output to console for testing
        // StreamResult result = new StreamResult(System.out);
        transformer.transform(source, result);

        System.out.println("File saved!");

1 个答案:

答案 0 :(得分:1)

您的问题似乎在这里:

nesne.getARTICLE_BYTE().toString()

我不熟悉您的Nesne类,但我可以告诉方法getARTICLE_BYTE()返回一个字节数组,在其上调用toString()将返回您当前无用的信息看,如果需要存储,那么你需要存储整个数组。使用for循环并将数组存储为每个字节的字符串表示不是最有效的事情,并且会导致超大的不可读XML,因此您可以将其存储在XML之外并传递引用XML中的字节数组文件。或者作为BLOB存储在数据库中。请注意,这不是我做的很多,所以我不是专家。