Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将XML转换为(X)HTML版本_Java_Html_Xml_Jsf 2_Jdom - Fatal编程技术网

Java 将XML转换为(X)HTML版本

Java 将XML转换为(X)HTML版本,java,html,xml,jsf-2,jdom,Java,Html,Xml,Jsf 2,Jdom,我制作了一个来自云服务器的som商店项目的html表表示。使用JDOM获取字符串和整数元素效果很好,但是云XML中的一个元素,称为itemDescription,更复杂,因为它包含更多的元素,我不知道如何将其转换为html,以便文本以描述的形式显示(列表、项、粗体和斜体) 云XML的示例: <w:item><w:itemID>6368</w:itemID><w:itemName>Samsung TV</w:itemName><w:

我制作了一个来自云服务器的som商店项目的html表表示。使用JDOM获取字符串和整数元素效果很好,但是云XML中的一个元素,称为itemDescription,更复杂,因为它包含更多的元素,我不知道如何将其转换为html,以便文本以描述的形式显示(列表、项、粗体和斜体)

云XML的示例:

<w:item><w:itemID>6368</w:itemID><w:itemName>Samsung TV</w:itemName><w:itemURL>www.samsung.com</w:itemURL><w:itemPrice>1500</w:itemPrice><w:itemStock>28</w:itemStock><w:itemDescription><w:document xmlns:w="http://www.cs.au.dk/dWebTek/2014">
        This
        <w:italics>authentic</w:italics>
         tv has several advantages:
        <w:list>
            <w:item>it is cool looking</w:item>
            <w:item>
                it is
                <w:bold>black</w:bold>
            </w:item>
            <w:item>it can be used in all kinds of weather</w:item>
        </w:list>
    </w:document></w:itemDescription></w:item>
itemListBean(在repeat标记中调用)返回商店中所有项目的ArrayList。以下是它的生成方式:

        ......
        SAXBuilder builder = new SAXBuilder();
        response = builder.build(con.getInputStream());
        ArrayList<Element> elementList = new ArrayList<Element>();
        elementList.addAll(response.getRootElement().getChildren());

        for (Element e : elementList) {
            String itemID = e.getChildText("itemID", ns);
            String itemName = e.getChildText("itemName", ns);
            String itemURL = e.getChildText("itemURL", ns);
            String itemPrice = e.getChildText("itemPrice", ns);
            String itemStock = e.getChildText("itemStock", ns);
            //Element description = e.getChild("itemDescription", ns);
            //String itemDescription = itemDescriptionReader.getTextContent(description);
            Item item = new Item(itemID, itemName, itemURL, itemPrice, itemStock, "itemDescription");
            itemList.add(item);
        }
        return itemList;
        .........
。。。。。。
SAXBuilder=新SAXBuilder();
response=builder.build(con.getInputStream());
ArrayList elementList=新的ArrayList();
addAll(response.getRootElement().getChildren());
对于(元素e:元素列表){
字符串itemID=e.getChildText(“itemID”,ns);
字符串itemName=e.getChildText(“itemName”,ns);
字符串itemURL=e.getChildText(“itemURL”,ns);
字符串itemPrice=e.getChildText(“itemPrice”,ns);
字符串itemStock=e.getChildText(“itemStock”,ns);
//元素描述=e.getChild(“itemsdescription”,ns);
//String itemDescription=itemDescriptionReader.getTextContent(描述);
Item Item=新项目(itemID、itemName、itemURL、itemPrice、itemStock、“itemDescription”);
项目列表。添加(项目);
}
返回项目列表;
.........

自定义标记工作正常。我只需要一个示例,说明如何将itemDescription元素从云XML转换为自定义标记,以便正确显示它

我不熟悉这些技术,但您是否考虑过使用XSLT将XML转换为XHTML?因为这是一个手册,所以存在一些限制,例如:“使用JDOM将云XML itemDescription转换为(X)HTML版本,可以在浏览器中呈现,并创建自定义JSF标记以在模板中插入值。”但我下次会记住XSLT的-谢谢!
@FacesComponent("dk.au.cs.dwebtek.hello")
public class HelloComponent extends UIComponentBase {
public String getFamily() {
    return "dk.au.cs.dwebtek.hello";}

public void encodeBegin(FacesContext arg0) throws IOException {
    super.encodeBegin(arg0);
}
public void encodeEnd(FacesContext context) throws IOException {
    ResponseWriter writer = context.getResponseWriter();
    writer.startElement("p", this);
    writer.write("Hello");
    writer.startElement("b", this);
    writer.write("World!");
    writer.endElement("b");
    writer.endElement("p");
}
}
        ......
        SAXBuilder builder = new SAXBuilder();
        response = builder.build(con.getInputStream());
        ArrayList<Element> elementList = new ArrayList<Element>();
        elementList.addAll(response.getRootElement().getChildren());

        for (Element e : elementList) {
            String itemID = e.getChildText("itemID", ns);
            String itemName = e.getChildText("itemName", ns);
            String itemURL = e.getChildText("itemURL", ns);
            String itemPrice = e.getChildText("itemPrice", ns);
            String itemStock = e.getChildText("itemStock", ns);
            //Element description = e.getChild("itemDescription", ns);
            //String itemDescription = itemDescriptionReader.getTextContent(description);
            Item item = new Item(itemID, itemName, itemURL, itemPrice, itemStock, "itemDescription");
            itemList.add(item);
        }
        return itemList;
        .........