21#include <com/sun/star/io/Pipe.hpp>
22#include <com/sun/star/xml/xpath/XPathObjectType.hpp>
23#include <com/sun/star/xml/dom/XNode.hpp>
24#include <com/sun/star/xml/dom/XText.hpp>
25#include <com/sun/star/xml/dom/XNodeList.hpp>
26#include <com/sun/star/xml/dom/NodeType.hpp>
27#include <rtl/character.hxx>
28#include <rtl/ustrbuf.hxx>
29#include <rtl/strbuf.hxx>
36using namespace css::uno;
37using namespace css::io;
38using namespace css::xml::xpath;
39using namespace css::xml::dom;
56 if (rtl::isAsciiAlphanumeric(
static_cast<unsigned char>(c)))
73 std::u16string_view aString, OStringBuffer& aBuffer)
76 const sal_uInt8 *pString =
reinterpret_cast< const sal_uInt8 *
>( utf8String.getStr() );
85 }
else if (*pString == 0x20) {
87 }
else if (*pString == 0x0d && *(pString+1) == 0x0a) {
90 }
else if (*pString == 0x0a) {
93 snprintf(tmpChar, 4,
"%%%X", *pString % 0x100);
97 snprintf(tmpChar, 4,
"%%%X", *pString % 0x100);
99 while (*pString >= 0x80) {
102 snprintf(tmpChar, 4,
"%%%X", *pString % 0x100);
117 Reference< XNodeList > aChildList = aNode->getChildNodes();
118 Reference< XNode > aChild;
120 if (aNode->getNodeType() == NodeType_ELEMENT_NODE)
122 OUString
aName = aNode->getNodeName();
124 OUStringBuffer aValue;
125 Reference< XText > aText;
126 for(sal_Int32
i=0;
i < aChildList->getLength();
i++)
128 aChild = aChildList->item(
i);
129 if (aChild->getNodeType() == NodeType_TEXT_NODE)
131 aText.set(aChild, UNO_QUERY);
132 aValue.append(aText->getData());
137 if (!aValue.isEmpty())
139 OUString aUnencValue = aValue.makeStringAndClear();
140 OStringBuffer aEncodedBuffer;
142 aEncodedBuffer.append(
"=");
144 aEncodedBuffer.append(
"&");
152 for(sal_Int32
i=0;
i < aChildList->getLength();
i++)
154 aChild = aChildList->item(
i);
156 if (aChild.is() && aChild->getNodeType() == NodeType_ELEMENT_NODE)
166 css::uno::Reference< css::xml::dom::XNode > cur =
m_aFragment->getFirstChild();
170 cur = cur->getNextSibling();
virtual void serialize() override
start the serialization process
CSerializationURLEncoded()
void serialize_node(const css::uno::Reference< css::xml::dom::XNode > &aNode)
static void encode_and_append(std::u16string_view aString, OStringBuffer &aBuffer)
css::uno::Reference< css::io::XPipe > m_aPipe
virtual css::uno::Reference< css::io::XInputStream > getInputStream() override
get the serialized bytes.
static bool is_unreserved(char)
css::uno::Reference< css::xml::dom::XDocumentFragment > m_aFragment
std::unique_ptr< sal_Int32[]> pData
Reference< XComponentContext > getProcessComponentContext()
css::uno::Reference< css::deployment::XPackageRegistry > create(css::uno::Reference< css::deployment::XPackageRegistry > const &xRootRegistry, OUString const &context, OUString const &cachePath, css::uno::Reference< css::uno::XComponentContext > const &xComponentContext)
OString OUStringToOString(std::u16string_view str, ConnectionSettings const *settings)
std::unique_ptr< char[]> aBuffer