如何在 Java 中从 String 创建 XML 对象?
Posted
技术标签:
【中文标题】如何在 Java 中从 String 创建 XML 对象?【英文标题】:How to create a XML object from String in Java? 【发布时间】:2011-11-28 06:29:36 【问题描述】:我正在尝试编写一个代码来帮助我创建一个 XML 对象。例如,我将一个字符串作为函数的输入,它会返回一个 XMLObject。
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
?
非常感谢大家
编辑 1: 实际上,现在我认为拥有像 base.xml
这样的文件可能会更容易,我会将所有基本内容写入其中,例如:
<snmp>
<snmpType><snmpType>
<OID></OID>
</snmp>
然后使用这个文件创建一个 XML 对象。你怎么看?
【问题讨论】:
给出 XMLObject 的完全限定名 (FQN)。你在使用 xmlbeans 吗? 好的,第一个问题:XMLObject
是什么?那是哪个图书馆?
XMLObject 只是一个例子,我想要一个获取字符串作为参数的函数,然后它将返回一个 XML 对象。我正在使用 jdom 来实现。
一旦拥有 XMLObject,您想对它做什么?如果您只想要一个可以在代码中操作和导航的表示,那么 Document/Element 可能就足够了。
@Richard 我将创建 XML 对象并通过套接字发送它们,然后我将获得用 XML 编写的信息。你觉得 Document/Element 够了吗?
【参考方案1】:
如果您可以创建字符串 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 版本?谢谢! 如果没有源,我们想创建一个新的 Document 对象,然后将子对象附加到它,是否有可能或者我们必须先创建根元素? 只是复制粘贴并花了几分钟检查,因为我使用错误的导入速度太快,仔细检查,正确的导入是:import javax.xml.parsers.DocumentBuilder;导入 javax.xml.parsers.DocumentBuilderFactory;导入 org.w3c.dom.Document;导入 org.xml.sax.InputSource;【参考方案2】:试试类似的东西
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);
【讨论】:
以上是关于如何在 Java 中从 String 创建 XML 对象?的主要内容,如果未能解决你的问题,请参考以下文章
在 Java 中从给定的 XML 创建 OpenSAML 断言
在 Azure Logic App 中从 JSON 转换为 XML 时如何防止按字母排序
如何在反应式 Java 中从 Mono<String> 获取字符串