map中list的xml写法

map中list的xml写法,第1张

Map中List的XML写法是非常简单的,你只需要使用<map>和<list>元素来包裹整个Map中List,然后在<map>中嵌套<entry>,每一个<entry>都有一对<key>和<value>,把Map中的键-值对放在<key>和<value>里面。而List也是一样,你只需要使用<list>元素来包裹List,然后在<list>中嵌套<item>,每一个<item>中就是你想放进List的元素了。例如:

<map>

<entry>

<key>name</key>

<value>Bob</value>

</entry>

<entry>

<key>age</key>

<value>20</value>

</entry>

<list>

<item>One</item>

<item>Two</item>

<item>Three</item>

</list>

</map>

上面的XML文件,表明了一个Map中包含一个键-值对(name-Bob)和一个List(One, Two, Three)。希望这对你有帮助。

在xml中定义查询的list集合的泛型可以在XML中使用resultMap标签,并指定collection属性,指定泛型类型。根据查询相关资料信息显示,resultMap标签允许开发人员指定泛型类型,以实现更少的重复代码,更好的可读性和更简洁的XML映射文件。

这是一个用JAVA W3C DOM 进行XML *** 作的例子,包含了查询、增加、修改、删除、保存的基本 *** 作。较完整的描述了一个XML的整个 *** 作流程。适合刚入门JAVA XML *** 作的朋友参考和学习。

假设有XML文件:test1.xml

<?xml version="1.0" encoding="GBK"?>

<books>

<book>

<name>哈里波特</name>

<price>10</price>

<memo>这是一本很好看的书。</memo>

</book>

<book id="B02">

<name>三国演义</name>

<price>10</price>

<memo>四大名著之一。</memo>

</book>

<book id="B03">

<name>水浒</name>

<price>6</price>

<memo>四大名著之一。</memo>

</book>

<book id="B04">

<name>红楼</name>

<price>5</price>

<memo>四大名著之一。</memo>

</book>

</books>

下面是为Test.java

import java.io.File

import java.io.FileNotFoundException

import java.io.FileOutputStream

import java.io.IOException

import org.w3c.dom.*

import org.xml.sax.SAXException

import javax.xml.parsers.*

import javax.xml.transform.*

import javax.xml.transform.dom.DOMSource

import javax.xml.transform.stream.*

import javax.xml.xpath.*

public class Test {

    public static void main(String[] args) {

        DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance()

        Element theBook=null, theElem=null, root=null

        try {

            factory.setIgnoringElementContentWhitespace(true)

            

            DocumentBuilder db=factory.newDocumentBuilder()

            Document xmldoc=db.parse(new File("Test1.xml"))

            root=xmldoc.getDocumentElement()

            

            //--- 新建一本书开始 ----

            theBook=xmldoc.createElement("book")

            theElem=xmldoc.createElement("name")

            theElem.setTextContent("新书")

            theBook.appendChild(theElem)

            

            theElem=xmldoc.createElement("price")

            theElem.setTextContent("20")

            theBook.appendChild(theElem)

            theElem=xmldoc.createElement("memo")

            theElem.setTextContent("新书的更好看。")

            theBook.appendChild(theElem)

            root.appendChild(theBook)

            System.out.println("--- 新建一本书开始 ----")

            output(xmldoc)

            //--- 新建一本书完成 ----

            //--- 下面对《哈里波特》做一些修改。 ----

            //--- 查询找《哈里波特》----

            theBook=(Element) selectSingleNode("/books/book[name='哈里波特']", root)

            System.out.println("--- 查询找《哈里波特》 ----")

            output(theBook)

            //--- 此时修改这本书的价格 -----

            theBook.getElementsByTagName("price").item(0).setTextContent("15")//getElementsByTagName返回的是NodeList,所以要跟上item(0)。另外,getElementsByTagName("price")相当于xpath的".//price"。

            System.out.println("--- 此时修改这本书的价格 ----")

            output(theBook)

            //--- 另外还想加一个属性id,值为B01 ----

            theBook.setAttribute("id", "B01")

            System.out.println("--- 另外还想加一个属性id,值为B01 ----")

            output(theBook)

            //--- 对《哈里波特》修改完成。 ----

            //--- 要用id属性删除《三国演义》这本书 ----

            theBook=(Element) selectSingleNode("/books/book[@id='B02']", root)

            System.out.println("--- 要用id属性删除《三国演义》这本书 ----")

            output(theBook)

            theBook.getParentNode().removeChild(theBook)

            System.out.println("--- 删除后的XML ----")

            output(xmldoc)

            //--- 再将所有价格低于10的书删除 ----

            NodeList someBooks=selectNodes("/books/book[price<10]", root)

            System.out.println("--- 再将所有价格低于10的书删除 ---")

            System.out.println("--- 符合条件的书有 "+someBooks.getLength()+"本。 ---")

            for(int i=0i<someBooks.getLength()i++) {

                someBooks.item(i).getParentNode().removeChild(someBooks.item(i))

            }

            output(xmldoc)

            saveXml("Test1_Edited.xml", xmldoc)

        } catch (ParserConfigurationException e) {

            e.printStackTrace()

        } catch (SAXException e) {

            e.printStackTrace()

        } catch (IOException e) {

            e.printStackTrace()

        }

    }

    public static void output(Node node) {//将node的XML字符串输出到控制台

        TransformerFactory transFactory=TransformerFactory.newInstance()

        try {

            Transformer transformer = transFactory.newTransformer()

            transformer.setOutputProperty("encoding", "gb2312")

            transformer.setOutputProperty("indent", "yes")

            DOMSource source=new DOMSource()

            source.setNode(node)

            StreamResult result=new StreamResult()

            result.setOutputStream(System.out)

            

            transformer.transform(source, result)

        } catch (TransformerConfigurationException e) {

            e.printStackTrace()

        } catch (TransformerException e) {

            e.printStackTrace()

        }   

    }

    

    public static Node selectSingleNode(String express, Object source) {//查找节点,并返回第一个符合条件节点

        Node result=null

        XPathFactory xpathFactory=XPathFactory.newInstance()

        XPath xpath=xpathFactory.newXPath()

        try {

            result=(Node) xpath.evaluate(express, source, XPathConstants.NODE)

        } catch (XPathExpressionException e) {

            e.printStackTrace()

        }

        

        return result

    }

    

    public static NodeList selectNodes(String express, Object source) {//查找节点,返回符合条件的节点集。

        NodeList result=null

        XPathFactory xpathFactory=XPathFactory.newInstance()

        XPath xpath=xpathFactory.newXPath()

        try {

            result=(NodeList) xpath.evaluate(express, source, XPathConstants.NODESET)

        } catch (XPathExpressionException e) {

            e.printStackTrace()

        }

        

        return result

    }

    

    public static void saveXml(String fileName, Document doc) {//将Document输出到文件

        TransformerFactory transFactory=TransformerFactory.newInstance()

        try {

            Transformer transformer = transFactory.newTransformer()

            transformer.setOutputProperty("indent", "yes")

            DOMSource source=new DOMSource()

            source.setNode(doc)

            StreamResult result=new StreamResult()

            result.setOutputStream(new FileOutputStream(fileName))

            

            transformer.transform(source, result)

        } catch (TransformerConfigurationException e) {

            e.printStackTrace()

        } catch (TransformerException e) {

            e.printStackTrace()

        } catch (FileNotFoundException e) {

            e.printStackTrace()

        }   

    }

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/7997401.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存