我想在java中以编程方式生成xml字符串,其名称空间是自定义的,如下所示,所有数据必须以xml格式动态出现。我怎样才能达到这样的成就?
<faxml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="test.xsd">
<person>
<name>ABC</name>
</person>
</faxml>
我经历过像https://howtodoinjava.com/jaxb/write-object-to-xml/这样的例子,但是当xml生成时,它的起点是
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
但我想要开始和结束标记
String name= "name"
String createXml="<faxml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"//
xsi:noNamespaceSchemaLocation="test.xsd">"//
+"<person>"//
+"<name>"+name+"</name>"//
+"</>person">"//
+"</faxml>";
Sysout(createXml);
在变量中获取名称。硬编码这些行并像这样插入…
这里有一种方法:
首先,这里是表示所需XML数据的类:
package org.ajames.jaxb.persons;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "")
@XmlRootElement(name = "faxml")
public class Faxml {
private Person person;
public static class Person {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
}
我选择将<code>Person</code>类嵌套在根类中——仅用于此测试。当然,还有其他方法来排列这些类,所以它们不是嵌套的。
然后,我为< code > org . ajames . JAXB . persons 定义< code>package-info,如下所示:
@XmlSchema(
namespace = "",
elementFormDefault = XmlNsForm.UNSET,
xmlns = {
@XmlNs(prefix = "", namespaceURI = "http://www.w3.org/2001/XMLSchema-instance")
})
package org.ajames.jaxb.persons;
import javax.xml.bind.annotation.XmlSchema;
import javax.xml.bind.annotation.XmlNs;
import javax.xml.bind.annotation.XmlNsForm;
为了将数据从Java对象处理成XML,我使用了以下测试数据:
Faxml.Person person = new Faxml.Person();
person.setName("ABC");
Faxml faxml = new Faxml();
faxml.setPerson(person);
JAXB上下文和编组器如下所示,假设我们正在将XML写入Java字符串,用于此测试:
JAXBContext jaxbContext = JAXBContext.newInstance(Faxml.class);
Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);
marshaller.setProperty(Marshaller.JAXB_NO_NAMESPACE_SCHEMA_LOCATION, "test.xsd");
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
StringWriter stringWriter = new StringWriter();
marshaller.marshal(faxml, stringWriter);
String xml = stringWriter.toString();
System.out.println(xml);
生成的 XML 是:
<faxml xsi:noNamespaceSchemaLocation="test.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<person>
<name>ABC</name>
</person>
</faxml>
问题内容: 我正在寻找可以构造使用名称空间的XML文档的Java代码。我似乎无法使用我最喜欢的工具找到任何东西,因此希望有人可以帮助我。 问题答案: 我不确定您要做什么,但是我将jdom用于大多数xml问题,并且它支持名称空间(当然)。 代码: 产生以下xml: 其中应包含您需要的一切。希望能有所帮助。
我在xslt中需要这个,但是xmlns:s=“{$service-uri}”没有提取: 如何提取名称空间定义中的service-uri变量?扎梅克
本文向大家介绍thinkphp autoload 命名空间自定义 namespace,包括了thinkphp autoload 命名空间自定义 namespace的使用技巧和注意事项,需要的朋友参考一下 使用thinkPHP过程中,一些自定义的类库和第三方类库需要找一个合适的位置放置,放到系统默认的org文件夹感觉不太好,破坏了thinkPHP的原生目录。 就看了一下官方手册,可以在模块或者应用的
主要内容:命名冲突,使用前缀来避免命名冲突,XML 命名空间 - xmlns 属性,统一资源标识符(URI,全称 Uniform Resource Identifier),默认的命名空间,实际使用中的命名空间XML 命名空间提供避免元素命名冲突的方法。 命名冲突 在 XML 中,元素名称是由开发者定义的,当两个不同的文档使用相同的元素名时,就会发生命名冲突。 这个 XML 携带 HTML 表格的信息: <table> <tr> <td>Apples</td> <td>Bananas</td> <
问题内容: 我花了整整一天的时间尝试从以下文档中提取一个XML节点,并且无法掌握XML命名空间的细微差别以使其正常工作。 XML文件总的来说很大,所以这是与我有关的部分: 该文档继续进行,并且从头到尾都井井有条。我正在尝试从“ documentnbr”标签(底部的三个)中提取“ number”属性。 我用于执行此操作的代码如下所示: 其中QUERY_FORM_NUMBER是我的XPath表达式,而
我正在尝试为小型XML创建XSD,它的默认名称空间为