|
|
|
|
@ -117,6 +117,59 @@ static TQString extractAtomContent(const TQDomElement& e)
|
|
|
|
|
return TQString();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TQDomElement extractElementNS(const TQDomNode &parent, const TQString &nameSpace, const TQString &localName)
|
|
|
|
|
{
|
|
|
|
|
TQDomElement element;
|
|
|
|
|
|
|
|
|
|
if (parent.isNull())
|
|
|
|
|
{
|
|
|
|
|
return element;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TQDomNodeList children = parent.childNodes();
|
|
|
|
|
for (size_t i = 0; i < children.count(); ++i)
|
|
|
|
|
{
|
|
|
|
|
TQDomNode node = children.item(i);
|
|
|
|
|
if (node.isElement() && node.namespaceURI() == nameSpace && node.localName() == localName)
|
|
|
|
|
{
|
|
|
|
|
element = node.toElement();
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return element;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TQString extractElementTextNS(const TQDomNode &parent, const TQString &namespaceURI, const TQString &localName, bool isInlined)
|
|
|
|
|
{
|
|
|
|
|
TQDomElement element = extractElementNS(parent, namespaceURI, localName);
|
|
|
|
|
|
|
|
|
|
if (element.isNull())
|
|
|
|
|
{
|
|
|
|
|
return TQString::null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TQString result = element.text().stripWhiteSpace();
|
|
|
|
|
if (localName == "content")
|
|
|
|
|
{
|
|
|
|
|
// Atom content
|
|
|
|
|
result = extractAtomContent(element);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
// Check for HTML; not necessary for atom:content
|
|
|
|
|
// Taken from extractNode below
|
|
|
|
|
bool hasPre = result.contains("<pre>", false) || result.contains("<pre ", false);
|
|
|
|
|
bool hasHtml = hasPre || result.contains("<");
|
|
|
|
|
if (!isInlined && !hasHtml)
|
|
|
|
|
result = result = result.replace(TQChar('\n'), "<br />");
|
|
|
|
|
if (!hasPre)
|
|
|
|
|
result = result.simplifyWhiteSpace();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return result.isEmpty() ? TQString::null : result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TQString extractNode(const TQDomNode &parent, const TQString &elemName, bool isInlined)
|
|
|
|
|
{
|
|
|
|
|
TQDomNode node = parent.namedItem(elemName);
|
|
|
|
|
@ -208,25 +261,25 @@ TQString parseItemAuthor(const TQDomElement& element, Format format, Version ver
|
|
|
|
|
TQString name;
|
|
|
|
|
TQString email;
|
|
|
|
|
|
|
|
|
|
TQDomElement dcCreator = element.namedItem("dc:creator").toElement();
|
|
|
|
|
|
|
|
|
|
TQDomElement dcCreator = extractElementNS(element, DublinCoreNamespace, "creator");
|
|
|
|
|
|
|
|
|
|
if (!dcCreator.isNull())
|
|
|
|
|
authorFromString(dcCreator.text(), name, email);
|
|
|
|
|
else if (format == AtomFeed)
|
|
|
|
|
{
|
|
|
|
|
TQDomElement atomAuthor = element.namedItem("author").toElement();
|
|
|
|
|
if (atomAuthor.isNull())
|
|
|
|
|
atomAuthor = element.namedItem("atom:author").toElement();
|
|
|
|
|
atomAuthor = extractElementNS(element, AtomNamespace, "author");
|
|
|
|
|
if (!atomAuthor.isNull())
|
|
|
|
|
{
|
|
|
|
|
TQDomElement atomName = atomAuthor.namedItem("name").toElement();
|
|
|
|
|
if (atomName.isNull())
|
|
|
|
|
atomName = atomAuthor.namedItem("atom:name").toElement();
|
|
|
|
|
atomName = extractElementNS(atomAuthor, AtomNamespace, "name");
|
|
|
|
|
name = atomName.text().stripWhiteSpace();
|
|
|
|
|
|
|
|
|
|
TQDomElement atomEmail = atomAuthor.namedItem("email").toElement();
|
|
|
|
|
if (atomEmail.isNull())
|
|
|
|
|
atomEmail = atomAuthor.namedItem("atom:email").toElement();
|
|
|
|
|
atomEmail = extractElementNS(atomAuthor, AtomNamespace, "email");
|
|
|
|
|
email = atomEmail.text().stripWhiteSpace();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|