- 使用 Spring Initializr 创建 Spring Boot 应用程序
- 在Spring Boot中配置Cassandra
- 在 Spring Boot 上配置 Tomcat 连接池
- 将Camel消息路由到嵌入WildFly的Artemis上
本文整理了Java中com.google.gdata.util.common.xml.XmlWriter
类的一些代码示例,展示了XmlWriter
类的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。XmlWriter
类的具体详情如下:
包路径:com.google.gdata.util.common.xml.XmlWriter
类名称:XmlWriter
[英]Implements a simple XML writer on top of java.io.PrintWriter. This implementation can be conveniently used to generate XML responses in servlets.
The XmlWriter class exposes a number of protected methods that enable it to be subclassed for the purposes of customizing its output. See com.google.javascript.util.JsonWriter for an example.
Optional Behaviors There are several behaviors of this class that are optionally available. These features are enabled by passing a Setto the constructor:
new XmlWriter(sw, EnumSet.of(WriterFlags.WRITE_HEADER,
WriterFlags.EXPAND_EMPTY, WriterFlags.PRETTY_PRINT), null)
The caller can supply any of the values enumerated in XmlWriter.WriterFlags, or none. Once a feature has been enabled in the constructor, it cannot be turned off.
The WRITE_HEADER flags causes XmlWriter to emit an XML header at the beginning of the XML document:
<?xml version='1.0'?>
The EXPAND_EMPTY flags causes XmlWriter to emit "expanded" empty elements (elements consisting of distinct begin and end tags):
<foo>
<wee really="yeah"></wee>
</foo>
The PRETTY_PRINT flag enables pretty printing. This feature formats the XML output with using new lines and tab characters:
<foo>
<bar>
<wee really="yeah"/>
</bar>
</foo>
Elements containing mixed content (i.e. both text children and full-fledged elements) will not generally be formatted correctly. If your XML document contains mixed content, you may not want to use pretty printing:
Will produce wonky formatting:
w.startElement(null, "txt", null, null);
w.simpleElement(null, "fooey", null, null);
w.characters("Kleenex");
w.endElement(null, "txt");
<txt>
<fooey/>Kleenex
</txt>
You can ensure correct formatting of mixed content in your document by using the #innerXml(String) method to write raw XML.
Correctly formatted:
w.startElement(null, "txt", null, null);
w.innerXml("<fooey/>");
w.characters("Kleenex");
w.endElement(null, "txt");
<txt><fooey/>Kleenex</txt>
[中]在java上实现一个简单的XML编写器。伊奥。印刷作家。这个实现可以方便地用于在servlet中生成XML响应。
XmlWriter类公开了许多受保护的方法,这些方法允许对其进行子类化,以自定义其输出。请看com。谷歌。javascript。util。以JsonWriter为例。
可选行为这个类有几个可选的行为。这些特性是通过向构造函数传递一个集合来启用的:
new XmlWriter(sw, EnumSet.of(WriterFlags.WRITE_HEADER,
WriterFlags.EXPAND_EMPTY, WriterFlags.PRETTY_PRINT), null)
调用方可以提供XmlWriter中枚举的任何值。WriterFlags,或者没有。一旦在构造函数中启用了某个功能,就无法将其关闭。
####包括XML头
WRITE_HEADER标志导致XmlWriter在XML文档的开头发出一个XML头:
<?xml version='1.0'?>
####扩展空元素
EXPAND_EMPTY标志导致XmlWriter发出“expanded”空元素(由不同的开始和结束标记组成的元素):
<foo>
<wee really="yeah"></wee>
</foo>
####漂亮的印刷品
PRETTY_PRINT标志启用PRETTY PRINT。此功能使用新行和制表符格式化XML输出:
<foo>
<bar>
<wee really="yeah"/>
</bar>
</foo>
#####警告
包含混合内容的元素(即文本子元素和完整元素)通常格式不正确。如果XML文档包含混合内容,您可能不想使用漂亮的打印:
将产生不可靠的格式:
w.startElement(null, "txt", null, null);
w.simpleElement(null, "fooey", null, null);
w.characters("Kleenex");
w.endElement(null, "txt");
<txt>
<fooey/>Kleenex
</txt>
通过使用#innerXml(String)方法编写原始XML,可以确保文档中混合内容的格式正确。
格式正确:
w.startElement(null, "txt", null, null);
w.innerXml("<fooey/>");
w.characters("Kleenex");
w.endElement(null, "txt");
<txt><fooey/>Kleenex</txt>
代码示例来源:origin: com.google.gdata/gdata-java-client
/**
* Emits a simple element (without child elements).
*
* @param namespace element namespace.
* @param name element name.
* @param attrs attributes. Can be {@code null}.
* @param value element value. Can be {@code null}.
* @throws IOException thrown by the underlying writer.
*/
public void simpleElement(XmlNamespace namespace, String name,
List<Attribute> attrs, String value) throws IOException {
startElement(namespace, name, attrs, null);
characters(value);
endElement(namespace, name);
}
代码示例来源:origin: com.mulesoft.google/google-api-gdata
/** Generates a gm:status tag if the status name is set. */
public void generate(XmlWriter w, ExtensionProfile extProfile)
throws IOException {
w.simpleElement(GoogleBaseNamespaces.GM, "disapproved", null, null);
}
代码示例来源:origin: com.google.gdata/gdata-core-1.0
private void generateEntries(XmlWriter w, ExtensionProfile extProfile)
throws IOException {
// Generate all entries
w.startRepeatingElement();
for (E entry : entries) {
entry.generateAtom(w, extProfile);
}
w.endRepeatingElement();
}
代码示例来源:origin: com.mulesoft.google/google-api-gdata
/**
* Ends the start tag for an element.
*/
protected void endOpenTag() throws IOException {
Element element = currentElement();
if (!element.openTagEnded) {
writeOpenTagEnd();
element.openTagEnded = true;
}
}
代码示例来源:origin: com.google.gdata/gdata-core-1.0
/**
* Writes a string without XML entity escaping.
*
* @param s the raw content to write without escaping.
* @throws IOException thrown by the underlying writer.
*/
public void writeUnescaped(String s) throws IOException {
endOpenTag();
currentElement().unformattedChildren = true;
writer.write(s);
}
}
代码示例来源:origin: com.google.gdata/gdata-core-1.0
/**
* Generates XML.
*
* @param w
* output writer
*
* @throws IOException
*/
@Override
public void generate(XmlWriter w, ExtensionProfile extProfile)
throws IOException {
w.startElement(atomPubNs, "service", null, null);
w.startRepeatingElement();
for (Workspace workspace : workspaces) {
workspace.generate(w, extProfile);
}
w.endRepeatingElement();
generateExtensions(w, extProfile);
w.endElement(atomPubNs, "service");
}
代码示例来源:origin: com.google.gdata/gdata-java-client
writeBeginOutput();
if (shouldWriteHeaderAndFooter()) {
writeHeader(encoding);
endOpenTag();
element = createElement(namespace.alias, namespace.uri, name);
} else {
element = createElement(null, null, name);
Element parentElement = currentElement();
if (parentElement != null) {
element.xmlLang = parentElement.xmlLang;
ensureNamespace(ns);
element.nsAlias = ensureNamespace(namespace);
writeOpenTagStart(element.nsAlias, name);
writeAttribute("xmlns", ns.alias, ns.uri); // xmlns:name=uri
} else {
writeAttribute(null, "xmlns", ns.uri); // xmlns=uri
writeAttribute(attr.nsAlias, attr.name, attr.value);
endOpenTag();
代码示例来源:origin: com.google.gdata/gdata-java-client
/** Generates the atom representation for this tag. */
public void generateAtom(XmlWriter w, ExtensionProfile extProfile)
throws IOException {
w.startElement(Namespaces.getAtomPubNs(), "control", null, null);
if (isDraft()) {
w.simpleElement(Namespaces.getAtomPubNs(), "draft", null, "yes");
}
generateExtensions(w, extProfile);
w.endElement();
}
代码示例来源:origin: com.mulesoft.google/google-api-gdata
@Override
public void generate(XmlWriter w, ExtensionProfile extProfile)
throws IOException {
w.startElement(Namespaces.EXIF_NAMESPACE, "tags", null, null);
Collection<ExifTag> fields = getExifTags();
for (ExifTag field : fields) {
field.generate(w, extProfile);
}
w.endElement();
}
代码示例来源:origin: com.google.gdata/gdata-core-1.0
/**
* Ensures the namespace is in scope and returns its alias.
* The top of the stack is assumed to be the current element.
* If the namespace is not found, it is appended to the current element.
*
* @return namespace alias or {@code null} for the default namespace.
*/
protected String ensureNamespace(XmlNamespace namespace) {
// Return the default namespace if possible. There is no need to add
// here, as it has already been added (with a null alias) by startElement()
// if the default namespace is set or changed.
if (namespace.uri.equals(defaultNamespace)) {
return null;
}
String alias = checkNamespace(namespace.uri);
// If not found, insert this namespace.
if (alias == null) {
Element current = currentElement();
namespace = ensureUniqueNamespaceAlias(current, namespace);
current.addNamespace(namespace);
alias = namespace.alias;
}
return alias;
}
代码示例来源:origin: com.mulesoft.google/google-api-gdata
/** Generates an element closing tag containing an XML blob. */
public static void endElement(XmlWriter w,
XmlNamespace namespace,
String elementName,
XmlBlob xml) throws IOException {
if (xml != null && xml.getBlob() != null) {
w.innerXml(xml.getBlob());
}
w.endElement(namespace, elementName);
}
}
代码示例来源:origin: com.google.gdata/gdata-java-client
/**
* Generates XML corresponding to extended properties. Implementations in
* extended classes should always call the base class to allow for nested
* extensions.
*
* @param w Output writer.
*
* @param extProfile Extension profile for use by nested extensions.
*
* @throws IOException
*/
protected void generateExtensions(XmlWriter w, ExtensionProfile extProfile)
throws IOException {
for (Extension ext : nonRepeatingExtensionMap.values()) {
ext.generate(w, extProfile);
}
for (List<Extension> extList : repeatingExtensionMap.values()) {
w.startRepeatingElement();
for (Extension ext : extList) {
ext.generate(w, extProfile);
}
w.endRepeatingElement();
}
if (xmlBlob != null) {
w.innerXml(xmlBlob.getBlob());
}
}
代码示例来源:origin: com.google.gdata/gdata-java-client
public XmlWriter getRequestWriter() throws IOException {
OutputStream requestStream = getRequestStream();
Writer writer = new OutputStreamWriter(requestStream, "utf-8");
return new XmlWriter(writer);
}
代码示例来源:origin: com.google.gdata/gdata-core-1.0
/**
* Closes everything that was opened by
* {@link #generateFeedStart}.
*
* @param w
* @throws IOException
*/
public void generateFeedEnd(XmlWriter w) throws IOException {
w.endElement(Namespaces.atomNs, "feed");
}
代码示例来源:origin: com.google.gdata/gdata-java-client
/**
* @return a plain-text representation of this text construct,
* or {@code null} in case of error
*/
@Override
public String getPlainText() {
try {
StringWriter sw = new StringWriter();
XmlWriter xw = new XmlWriter(sw);
xw.innerXml(xhtml.getBlob());
return HtmlToText.htmlToPlainText(sw.toString());
} catch (IOException e) {
// IOException isn't very meaningful to callers, so it's better to
// return null in this case.
return null;
}
}
代码示例来源:origin: com.google.gdata/gdata-java-client
/**
* Ends the current element. It is expected to be on top of the stack.
*
* @param namespace element namespace.
* @param name element name.
*/
public void endElement(XmlNamespace namespace, String name)
throws IOException {
Element element = currentElement();
assert namespace == null || element.nsUri.equals(namespace.uri);
assert element.name.equals(name);
endElement();
}
代码示例来源:origin: com.mulesoft.google/google-api-gdata
/**
* Emits character data subject to XML escaping.
*
* @param s string to emit. Can be {@code null}.
* @throws IOException thrown by the underlying writer.
*/
public void characters(String s) throws IOException {
characters(s, false);
}
代码示例来源:origin: com.google.gdata/gdata-java-client
/**
* Starts an element. This element can be a parent to other elements.
*
* @param name element name.
*/
public void startElement(String name) throws IOException {
startElement(null, name, null, null);
}
代码示例来源:origin: com.mulesoft.google/google-api-gdata
/**
* Indicates that the series of repeating elements have been completely
* written.
*/
@SuppressWarnings("unused")
public void endRepeatingElement() throws IOException {
currentElement().repeatingCount = Element.NOT_REPEATING;
}
代码示例来源:origin: com.google.gdata/gdata-java-client
/**
* The default namespace that will take effect on the next
* element transition.
*
* @param w output writer object.
* @param f writer configuration flags or {@code null for no flags}
* @param encoding charset encoding. When non-null, implicitly causes
* the WRITE_HEADER flag to be set.
* @throws IOException thrown by the underlying writer.
*
* @see WriterFlags
*/
@SuppressWarnings("unused") // for IOException not thrown here
public XmlWriter(Writer w, Set<WriterFlags> f, String encoding) throws IOException {
this.writer = w;
this.flags = f != null ? f : EnumSet.noneOf(WriterFlags.class);
this.encoding = encoding;
/*
* Create the element stack and push an initial dummy element on it.
* This enables parent checking and other basic functionality for
* the root element without requiring special case handling of an
* empty element stack.
*/
this.elementStack = new Stack<Element>();
Element rootElement = createElement(null, null, null);
rootElement.openTagEnded = true;
elementStack.push(rootElement);
}
COM 内存泄漏最常见的原因是什么? 我读过将初始化的 CComBSTR 的地址作为 [out] 参数传递给函数会导致泄漏。我正在寻找像这样枚举其他常见的编程错误。 最佳答案 未能为 COM 对象使用
在COM服务器执行过程中分配一 block 内存,然后通过一个输出参数将该内存块传递给客户端是很常见的。然后,客户端有义务使用 CoTaskMemFree() 等方法释放该内存。 问题是,这 bloc
我有一些 MFC 代码(自定义 CWnd 控件和一些要公开的类),我需要将它们制作成带有接口(interface)的 activex/COM 对象。使用 MFC 支持制作 ATL 项目并以这种方式制作
Devenv.com 是 visual studio 命令行界面,当您键入 devenv/? 时,devenv 的帮助会出现在控制台上。但是,如果没有任何选项,devenv.com 只会调用 deve
如何将 COM 接口(interface)的引用作为 COM 库中的参数传递? 这是示例: 1)客户端代码成功创建coclass并接收到pFunctionDiscovery中的接口(interface
我正在使用 django,我在 s3 中存储了诸如 imgs 之类的东西(为此我使用的是 boto),但最近我收到了这个错误: 'foo.bar.com.s3.amazonaws.com' doesn
我已经使用组件服务 MSC 对话框创建了一个 COM+ 应用程序。我将一个现有的 COM 对象导入到这个新的 COM+ 应用程序中。 我知道可以通过 COM+ 应用程序调用该 COM 对象。我可以简单
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 11 年前。 Improve thi
我正在使用通过 COM Interop 包装器公开的第三方 dll。但是,其中一个 COM 调用经常卡住(至少从不返回)。为了至少让我的代码更健壮一些,我异步包装了调用(_getDeviceInfoW
很多年前我读到有一个简单的 php 脚本可以将您的网站重定向到 http://example.com/google.com 到 google.com它适用于正斜杠右侧的任何域。我忘记了这个脚本是什么或
我正在实现我的第一个进程外 COM 服务器(我的第一个 COM 服务器,就此而言)。我已经按照步骤编写了一个 IDL 文件,为代理/ stub DLL 生成代码,编译 DLL,并注册它。 当我检查注册
是否可以在未知接口(interface)上增加 RCW 引用计数? (即不是底层 COM 对象的引用计数) 我有一些旧的 COM 服务器代码 int Method1(object comobject)
我注意到许多关于 COM 的书籍等都指出,在 COM 聚合中实现一个可用作内部对象的对象相对容易。但是,除非我遗漏了什么,否则聚合似乎只能在极其有限的场景中成功,因此只有在明确识别出这种场景时才应提供
假设我正在开发一个安装 COM 组件并安装程序注册它们的应用程序。这很好用。 现在该软件需要从内存棒上运行。如何注册我的库运行时并确保在运行应用程序后清理注册表? 最佳答案 您总是在 XP 或更高版本
我们已经使用Microsoft的ActiveX/COM(VB6)技术开发了一个软件系统。去年,我对自动化构建过程和整个SCM越来越感兴趣。我集中搜索了网络的大部分内容,以获取有关如何使用基于COM的软
我对 com 线程模型有点困惑。 我有一个 inproc 服务器,我想创建一个可从任何线程访问的接口(interface),而不管 CoInitializeEx 中使用的线程模型和/或标志。 当将接口
我的包以旁加载方式安装,并不断遇到特定于应用程序的权限错误。 是的,许多人建议在 regedit 和组件服务中手动更改权限和所有者。 我的应用实际上在组件服务(DCOMCNFG、DCOMCNFG -3
我正在使用第三方应用程序,并调用创建 的实例。我的 COM 对象。这个调用成功了,但是第三方应用程序上的函数没有返回指向创建对象的指针(我不知道为什么)。有没有办法获得指向我的对象的指针? 为了澄清,
我有一个用 C# 编写的托管 COM 对象和一个用 C++(MFC 和 ATL)编写的 native COM 客户端和接收器。客户端创建对象并在启动时向其事件接口(interface)提供建议,并在其
我的应用程序需要注册两个 COM DLL。如果用户有必要的访问权限,它会自动完成,否则可以使用 regsvr32 完成。 . 现在在一些工作站上会发生以下情况: 开始cmd.exe作为管理员 注册第一
我是一名优秀的程序员,十分优秀!