如何在 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> 获取字符串

如何在 Maven 中从 pom.xml 调用 testng.xml 文件

在 Eclipse 中从 XML 生成 Java 代码

如何在字符串中从 XML 加载 org.w3c.dom.Document?