AAPT2: Add Inline Complex XML support
See: https://developer.android.com/guide/topics/resources/complex-xml-resources.html Change-Id: I8274c85e25cabf90423141c228697e873167d136
This commit is contained in:
@@ -247,5 +247,59 @@ void Debug::dumpHex(const void* data, size_t len) {
|
||||
}
|
||||
}
|
||||
|
||||
namespace {
|
||||
|
||||
class XmlPrinter : public xml::Visitor {
|
||||
public:
|
||||
using xml::Visitor::visit;
|
||||
|
||||
void visit(xml::Element* el) override {
|
||||
std::cerr << mPrefix;
|
||||
std::cerr << "E: ";
|
||||
if (!el->namespaceUri.empty()) {
|
||||
std::cerr << el->namespaceUri << ":";
|
||||
}
|
||||
std::cerr << el->name << " (line=" << el->lineNumber << ")\n";
|
||||
|
||||
for (const xml::Attribute& attr : el->attributes) {
|
||||
std::cerr << mPrefix << " A: ";
|
||||
if (!attr.namespaceUri.empty()) {
|
||||
std::cerr << attr.namespaceUri << ":";
|
||||
}
|
||||
std::cerr << attr.name << "=" << attr.value << "\n";
|
||||
}
|
||||
|
||||
const size_t previousSize = mPrefix.size();
|
||||
mPrefix += " ";
|
||||
xml::Visitor::visit(el);
|
||||
mPrefix.resize(previousSize);
|
||||
}
|
||||
|
||||
void visit(xml::Namespace* ns) override {
|
||||
std::cerr << mPrefix;
|
||||
std::cerr << "N: " << ns->namespacePrefix << "=" << ns->namespaceUri
|
||||
<< " (line=" << ns->lineNumber << ")\n";
|
||||
|
||||
const size_t previousSize = mPrefix.size();
|
||||
mPrefix += " ";
|
||||
xml::Visitor::visit(ns);
|
||||
mPrefix.resize(previousSize);
|
||||
}
|
||||
|
||||
void visit(xml::Text* text) override {
|
||||
std::cerr << mPrefix;
|
||||
std::cerr << "T: '" << text->text << "'\n";
|
||||
}
|
||||
|
||||
private:
|
||||
std::string mPrefix;
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
||||
void Debug::dumpXml(xml::XmlResource* doc) {
|
||||
XmlPrinter printer;
|
||||
doc->root->accept(&printer);
|
||||
}
|
||||
|
||||
} // namespace aapt
|
||||
|
||||
Reference in New Issue
Block a user