read/write and create local xml file

Deadly 提交于 2019-12-20 06:28:27

问题


i have one xml name 1.xmllike that

<?xml version="1.0" encoding="utf-8"?>
<domains>
<domain url="www.google.com" id="123"/>
<domain url="www.yahoo.com" id="123"/></domains>

Now i want to read this xmlfile. i have put this xml in res>xml folder. How can i read this xml file ? in addition i want to add new some new url in this xml ? so is it possible programmatically ?


回答1:


For reading values from XML file in res folder, Use the following code-

try {
    String jsPath = "1.xml"; 
    InputStream input = getClass().getResourceAsStream(jsPath);
    byte [] content = IOUtilities.streamToBytes(input); 
    String contentAsString = new String(content);
    //Dialog.alert(contentAsString);
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder = factory.newDocumentBuilder();
    XMLDOMUtil xml = new XMLDOMUtil();
    ByteArrayInputStream bis = new ByteArrayInputStream(contentAsString.getBytes("UTF-8"));
    Document document = builder.parse(bis);
    NodeList listOfPersons = document.getElementsByTagName("domains");
    NodeList listOfPersons1 = document.getElementsByTagName("domain");
    //int totalPersons = listOfPersons1.getLength();
   // Dialog.alert(totalPersons+"");
    for(int s=0; s<listOfPersons1.getLength() ; s++)
        {
        Node firstPersonNode = listOfPersons1.item(s);
        Element firstPersonElement = (Element)firstPersonNode;
        Dialog.alert(firstPersonElement.getAttribute( "url")+"---"+firstPersonElement.getAttribute( "id" ));
        }

} catch (IOException e) {
    e.printStackTrace();
} catch (SAXException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (ParserConfigurationException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

XMLDOMUtil.java is given below-

public class XMLDOMUtil {
        // go thru the list of childs and find the text associated by the tag
        public String getNodeTextByTag(Node parentNode, String name) {
                Node node = parentNode.getFirstChild();
                Text text = null;
                String retStr = null;
                try {
                        while (node != null) {
                                if (node.getNodeName().equals(name)) {
                                        text = (Text) node.getFirstChild();
                                        retStr = text.getData();
                                        break;
                                }
                                node = node.getNextSibling();
                        }
                } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
                return retStr;
        }
        public Node getNodeByTag(Node parentNode, String name) {
                Node node = parentNode.getFirstChild();
                Node retNode = null;
                while (node != null) {
                        if (node.getNodeName().equals(name)) {
                                retNode = node;
                                break;
                        }
                        node = node.getNextSibling();
                }
                return retNode;
        }
        public Node getNextSiblingNodeByTag(Node siblingNode, String name) {
                Node retNode = null;
                siblingNode = siblingNode.getNextSibling();
                while (siblingNode != null) {
                        if (siblingNode.getNodeName().equals(name)) {
                                retNode = siblingNode;
                                break;
                        }
                        siblingNode = siblingNode.getNextSibling();
                }
                return retNode;
        }
}


来源:https://stackoverflow.com/questions/15361763/read-write-and-create-local-xml-file

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!