我有一个要解析的xml示例
<?xml version="1.0" encoding="utf-8"?>
<Details>
<detail-a>
<detail> attribute 1 of detail a </detail>
<detail> attribute 2 of detail a </detail>
<detail> attribute 3 of detail a </detail>
</detail-a>
<detail-b>
<detail> attribute 1 of detail b </detail>
<detail> attribute 2 of detail b </detail>
</detail-b>
</Details>
我想从此xml中编写一个方法,将该方法解析为键是字符串且值是字符串列表的hashmap。
例如:键“ detail a” value = {“ detail a的属性1”,“ detail a的属性2”,“ detail a的属性3”}
等等..
做这个的最好方式是什么 ?因为我很困惑:\
我走了这么远才能尝试打印detail-a和detail-b,但我还是空白…
public static void main(String[] args) {
// TODO Auto-generated method stub
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
DocumentBuilder builder;
try {
builder = factory.newDocumentBuilder();
File f= new File("src/Details.xml");
Document doc=builder.parse(f);
Element root=doc.getDocumentElement();
NodeList children=root.getChildNodes();
for(int i=0;i<children.getLength();i++)
{
Node child=children.item(i);
if (child instanceof Element)
{
Element childElement=(Element) child;
Text textNode=(Text)childElement.getFirstChild();
String text=textNode.getData().trim();
System.out.println(text);
}
}
} catch (ParserConfigurationException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
使用JAXB
从读取xml
并保存为自定义对象。
自定义对象类:
import java.util.List;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
@XmlRootElement(name = "Details")
@XmlType(propOrder = { "detailA", "detailB" })
public class Details {
private List<String> detailA;
private List<String> detailB;
public void setDetailA(List<String> detailA) {
this.detailA = detailA;
}
@XmlElementWrapper(name = "detail-a")
@XmlElement(name = "detail")
public List<String> getDetailA() {
return detailA;
}
public void setDetailB(List<String> detailB) {
this.detailB = detailB;
}
@XmlElementWrapper(name = "detail-b")
@XmlElement(name = "detail")
public List<String> getDetailB() {
return detailB;
}
}
将数据从xml中提取到对象中,然后根据需要将内容添加到地图中:
public static void main(String[] args) throws JAXBException, FileNotFoundException {
System.out.println("Output from our XML File: ");
JAXBContext context = JAXBContext.newInstance(Details.class);
Unmarshaller um = context.createUnmarshaller();
Details details = (Details)um.unmarshal(new FileReader("details.xml"));
List<String> detailA = details.getDetailA();
List<String> detailB = details.getDetailB();
Map<String, String[]> map = new HashMap<String, String[]>();
map.put("detail-a", detailA.toArray(new String[detailA.size()]));
map.put("detail-b", detailB.toArray(new String[detailB.size()]));
for (Map.Entry<String, String[]> entry : map.entrySet()) {
//key "detail a" value={"attribute 1 of detail a","attribute 2 of detail a","attribute 3 of detail a"}
System.out.print("Key \"" +entry.getKey()+"\" value={");
for(int i=0;i<entry.getValue().length;i++){
if(i!=entry.getValue().length-1){
System.out.print("\""+entry.getValue()[i]+"\",");
}
else{
System.out.print("\""+entry.getValue()[i]+"\"}");
}
}
System.out.println();
}
}
输出将是:
XML文件的输出:
关键字“ detail-a”值= {“详细信息a的属性1”,“详细信息a的属性2”,“详细信息a的属性3”}
键“ detail-b”值= {“详细信息b的属性1”,“详细信息b的属性2”}
注意:这仅适用于您在问题中作为输入提供的xml,如果您需要添加诸如此类的更多详细信息detail-c
,则还必须在自定义对象中定义它们。
使用的XML:
<?xml version="1.0" encoding="utf-8"?>
<Details>
<detail-a>
<detail>attribute 1 of detail a</detail>
<detail>attribute 2 of detail a</detail>
<detail>attribute 3 of detail a</detail>
</detail-a>
<detail-b>
<detail>attribute 1 of detail b</detail>
<detail>attribute 2 of detail b</detail>
</detail-b>
</Details>
我有一些信息存储在XML中,我需要解析XML并将一些值存储在Hashmap中。以下是XML: 我想要的关键是:Room1和值:16.412094,48.19719(例如为部分ID=1) 这是第一部分的示例。我有100多个部分,所以我想像我在第一个示例中解释的那样为每个部分存储键和值。 输出为: 房间1: 16.412094,48.19719;房间2: 16.369865,48.199006; 房间
问题内容: 我有一个XML文件,例如 如何将其解析为JSON结构文件? 问题答案: 对于一个简单的解决方案,我建议使用Jackson库,它是一个Java库,用于生成和读取带有XML扩展名的JSON,因为它只需几行简单的代码就可以将任意复杂的XML转换为JSON。 input.xml Java代码: 该演示使用Jackson 1.7.7 (较新的1.7.8也可以使用),Jackson XML Dat
问题内容: 如何解析包含数据的XML 我们如何解析xml并获取包含在???中的数据? 问题答案: (http://www.java2s.com/Code/Java/XML/GetcharacterdataCDATAfromxmldocument.htm)
我得到的错误是:无法将java.lang.String实例反序列化出START_OBJECT令牌 如何将xml元素反序列化更正为基元类型?
我正在尝试将JSON转换为GSON,我不确定这是最好的结构。 所有响应都由代码、消息和数据结构组成。但数据的内部结构可能会有所不同。 这是我的回应对象
问题内容: 我有一个看起来像这样的XML文件: 我想将其读入python对象,类似于字典列表。因为标记是绝对固定的,所以我很想使用正则表达式(我非常擅长使用那些正则表达式)。但是,我想我会检查是否有人知道如何在此处轻松避免使用正则表达式。我对SAX或其他解析没有太多经验,但是我愿意学习。 我期待向您展示如何在不使用regexes的情况下快速完成此操作。谢谢你的帮助! 问题答案: 如果您认为正则表达