如何在Java中从字符串创建XML对象?

45

我正在尝试编写一个帮助我创建XML对象的代码。例如,我将给定一个字符串作为输入到一个函数中,它将返回一个XML对象。

XMLObject convertToXML(String s) {}

我在网上搜索时,通常看到关于创建XML文档的示例。因此,我所看到的所有关于创建XML并写入文件并创建文件的内容都是这样的。但是我已经做了像这样的事情:

Document document = new Document();
Element child = new Element("snmp");
child.addContent(new Element("snmpType").setText("snmpget"));
child.addContent(new Element("IpAdress").setText("127.0.0.1"));
child.addContent(new Element("OID").setText("1.3.6.1.2.1.1.3.0"));
document.setContent(child);

您认为只创建一个XML对象就足够了吗?还请您帮忙解答如何从XML中获取数据,例如,我该如何从这个XML中获取IpAdress

非常感谢大家。

EDIT 1:实际上,现在我觉得对我来说,拥有一个名为base.xml的文件可能会更容易,我会将所有基本信息写入其中,例如:

<snmp>
<snmpType><snmpType>
<OID></OID>
</snmp>

然后使用此文件创建XML对象。您对此有何看法?


请提供XMLObject的完全限定名称(FQN)。您是否在使用xmlbeans? - Aravind Yarram
好的,第一个问题:什么是XMLObject?它属于哪个库? - forty-two
XMLObject只是一个例子,我想要一个函数,它以字符串作为参数,然后返回一个XML对象。我正在使用jdom进行实现。 - Ozer
一旦你拥有了XMLObject,你想用它做什么?如果你只是想要一个在代码中可以操纵和浏览的表示形式,那么Document/Element可能就足够了。 - Richard
@Richard 我将创建XML对象并通过套接字发送它们,然后我将获取写在XML中的信息。你认为Document/Element足够吗? - Ozer
2个回答

86

如果你可以创建一个字符串xml,你就可以轻松地将其转换为xml文档对象,例如:

String xmlString = "<?xml version=\"1.0\" encoding=\"utf-8\"?><a><b></b><c></c></a>";  

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();  
DocumentBuilder builder;  
try {  
    builder = factory.newDocumentBuilder();  
    Document document = builder.parse(new InputSource(new StringReader(xmlString)));  
} catch (Exception e) {  
    e.printStackTrace();  
} 

您可以使用文档对象和XML解析库,或XPath来获取IP地址。


据我所知,“parse”返回一个DOM文档对象,您要如何获取此代码的SAX版本?谢谢! - theexplorer
1
如果没有源,我们想创建一个新的Document对象并向其附加子元素,是否可能或者我们必须先创建根元素? - Romantic Electron
1
只需复制粘贴并花费一对分钟进行检查,因为我使用了错误的导入以过于迅速,双重检查,正确的导入是:import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; org.w3c.dom.Document; org.xml.sax.InputSource; - Falco

11

尝试类似这样的东西

public static Document loadXML(String xml) throws Exception
{
   DocumentBuilderFactory fctr = DocumentBuilderFactory.newInstance();
   DocumentBuilder bldr = fctr.newDocumentBuilder();
   InputSource insrc = new InputSource(new StringReader(xml));
   return bldr.parse(insrc);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接