【问题标题】:I want to parse a string to xml in java and write that to a xml file我想在java中将字符串解析为xml并将其写入xml文件
【发布时间】:2013-07-02 14:10:02
【问题描述】:

文件应该是这样的

<root>
     <node label="ValueFromDatabase"/>        
</root>;

我会从数据库中获取更多节点标签,标签是可变的。

其实我应该把问题说得更清楚。我使用了这样的字符串

String xmlSourceResource =
             "<?xml version='1.0' encoding='UTF-8'?>\n"+
             "<root>\n"+
             xmlString+
             "</root>";

xmlString 变量包含带有标签的节点。现在,我将它解析为这样的 xml

StringWriter xmlResultResource = new StringWriter();
Transformer xmlTransformer=TransformerFactory.newInstance().newTransformer();    
xmlTransformer.transform(new StreamSource(new StringReader(xmlSourceResource)),new StreamResult(xmlResultResource));

我需要在 XML 变量中的 Flex 动作脚本类中使用它。所以,如果可能的话,我应该如何解析它或将 XML 发送到 flex。我不想制作 XML 文件。

感谢您的回答。

【问题讨论】:

  • 尾随 ; 使 XML 无效
  • 试试 JAXB。它将帮助您将 java 对象转换为 xml
  • 不仅; 是问题所在,因为第一行中没有 xml 声明。抛开这一点:没有人说它是一个需要序列化为 XML 的对象,但我们确实知道数据来自数据库,所以我建议 javax.xml.parsers.DocumentBuilder 而不是 JAXB。

标签: java xml


【解决方案1】:

我希望这会有所帮助:

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

/**
 *
 * @author ugo_dock
 */
public class JavaToXML {

public static void main(String args[]){
    Myself myself = new Myself();

    myself.setAge(48);
    myself.setFirstName("Barry");
    myself.setLastName("White");

    try{
    JAXBContext jAXBContext = JAXBContext.newInstance(Myself.class);
        Marshaller jaxbMarshaller = jAXBContext.createMarshaller();
        jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
        jaxbMarshaller.marshal(myself, System.out);
    }
    catch(JAXBException e){
        e.printStackTrace(System.out);
    }

}
}

@XmlRootElement
class Myself{


private String firstName;
private String lastName;
private int age;

public String getFirstName() {
    return firstName;
}
@XmlElement
public void setFirstName(String firstName) {
    this.firstName = firstName;
}

public String getLastName() {
    return lastName;
}
@XmlElement
public void setLastName(String lastName) {
    this.lastName = lastName;
}

public int getAge() {
    return age;
}
@XmlElement
public void setAge(int age) {
    this.age = age;
}


}

输出将是:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <myself>
    <age>48</age>
    <firstName>Barry</firstName>
    <lastName>White</lastName>
</myself>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-14
    • 2010-10-08
    • 1970-01-01
    相关资源
    最近更新 更多