mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-02-10 18:05:41 +08:00
.
This commit is contained in:
@ -146,27 +146,7 @@ namespace XmlUtils
|
||||
static void EnableOutput();
|
||||
};
|
||||
|
||||
class CXmlNodeBase;
|
||||
class CXmlNode;
|
||||
class KERNEL_DECL CXmlNodes
|
||||
{
|
||||
private:
|
||||
class Impl;
|
||||
Impl *impl_;
|
||||
|
||||
public:
|
||||
CXmlNodes();
|
||||
~CXmlNodes();
|
||||
bool IsValid();
|
||||
int GetCount();
|
||||
bool GetAt(int nIndex, CXmlNode& oXmlNode);
|
||||
|
||||
void push_back(CXmlNode &node);
|
||||
|
||||
friend class CXmlNode;
|
||||
};
|
||||
|
||||
|
||||
class CXmlNodeBase;
|
||||
class KERNEL_DECL CXmlNode
|
||||
{
|
||||
private:
|
||||
@ -236,14 +216,14 @@ namespace XmlUtils
|
||||
CXmlNode ReadNode(const wchar_t* strNodeName);
|
||||
CXmlNode ReadNode(const std::wstring& strNodeName);
|
||||
CXmlNode ReadNodeNoNS(const std::wstring& strNodeName);
|
||||
CXmlNodes ReadNodesNoNS(const std::wstring& strNodeName);
|
||||
std::vector<CXmlNode> ReadNodesNoNS(const std::wstring& strNodeName);
|
||||
|
||||
CXmlNode GetNode(const std::wstring& sName);
|
||||
CXmlNodes GetNodes(const std::wstring& sName);
|
||||
bool GetChilds(CXmlNodes& oXmlNodes);
|
||||
std::vector<CXmlNode> GetNodes(const std::wstring& sName);
|
||||
bool GetChilds(std::vector<CXmlNode>& oXmlNodes);
|
||||
|
||||
bool GetNode(const std::wstring& sName, CXmlNode& oNode);
|
||||
bool GetNodes(const std::wstring& sName, CXmlNodes& oNodes);
|
||||
bool GetNodes(const std::wstring& sName, std::vector<CXmlNode>& oNodes);
|
||||
|
||||
CXmlNode& operator=(const CXmlNode& oSrc);
|
||||
|
||||
@ -265,15 +245,14 @@ namespace XmlUtils
|
||||
|
||||
#define XmlMacroLoadArray(node, name, list, type) \
|
||||
{ \
|
||||
XmlUtils::CXmlNodes oNodes; \
|
||||
std::vector<XmlUtils::CXmlNode> oNodes; \
|
||||
if (node.GetNodes(name, oNodes)) \
|
||||
{ \
|
||||
int nCount = oNodes.GetCount(); \
|
||||
for (int i = 0; i < nCount; ++i) \
|
||||
int nCount = oNodes.size(); \
|
||||
for (size_t i = 0; i < nCount; ++i) \
|
||||
{ \
|
||||
XmlUtils::CXmlNode oItem; \
|
||||
oNodes.GetAt(i, oItem); \
|
||||
list.push_back(type()); \
|
||||
XmlUtils::CXmlNode & oItem = oNodes[i]; \
|
||||
list.push_back(type()); \
|
||||
list[i].fromXML(oItem); \
|
||||
} \
|
||||
} \
|
||||
|
||||
@ -156,51 +156,7 @@ namespace XmlUtils
|
||||
|
||||
namespace XmlUtils
|
||||
{
|
||||
class CXmlNodes::Impl
|
||||
{
|
||||
public:
|
||||
std::vector<CXmlNode> m_nodes;
|
||||
};
|
||||
CXmlNodes::CXmlNodes() :impl_(NULL)
|
||||
{
|
||||
impl_ = new Impl();
|
||||
}
|
||||
CXmlNodes::~CXmlNodes()
|
||||
{
|
||||
if (impl_)
|
||||
delete impl_;
|
||||
impl_ = NULL;
|
||||
}
|
||||
bool CXmlNodes::IsValid()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
int CXmlNodes::GetCount()
|
||||
{
|
||||
if (impl_)
|
||||
return (int) impl_->m_nodes.size();
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
bool CXmlNodes::GetAt(int nIndex, CXmlNode& oXmlNode)
|
||||
{
|
||||
if (nIndex < 0 || nIndex >= GetCount())
|
||||
return false;
|
||||
|
||||
if (impl_)
|
||||
oXmlNode = impl_->m_nodes[nIndex];
|
||||
return true;
|
||||
}
|
||||
void CXmlNodes::push_back(CXmlNode &oNode)
|
||||
{
|
||||
if (impl_)
|
||||
impl_->m_nodes.insert(impl_->m_nodes.end(), oNode);
|
||||
}
|
||||
}
|
||||
|
||||
namespace XmlUtils
|
||||
{
|
||||
class CXmlDOMDocument : public IXmlDOMDocument, public CXmlLiteReader_Private
|
||||
class CXmlDOMDocument : public IXmlDOMDocument, public CXmlLiteReader_Private
|
||||
{
|
||||
public:
|
||||
CXmlNodeBase* m_pNode;
|
||||
@ -763,9 +719,9 @@ namespace XmlUtils
|
||||
}
|
||||
return node;
|
||||
}
|
||||
CXmlNodes CXmlNode::ReadNodesNoNS(const std::wstring& sName)
|
||||
std::vector<CXmlNode> CXmlNode::ReadNodesNoNS(const std::wstring& sName)
|
||||
{
|
||||
CXmlNodes oNodes;
|
||||
std::vector<CXmlNode> oNodes;
|
||||
|
||||
if (IsValid())
|
||||
{
|
||||
@ -795,9 +751,9 @@ namespace XmlUtils
|
||||
GetNode(sName, oNode);
|
||||
return oNode;
|
||||
}
|
||||
CXmlNodes CXmlNode::GetNodes(const std::wstring& sName)
|
||||
std::vector<CXmlNode> CXmlNode::GetNodes(const std::wstring& sName)
|
||||
{
|
||||
CXmlNodes oNodes;
|
||||
std::vector<CXmlNode> oNodes;
|
||||
if (IsValid())
|
||||
{
|
||||
bool bGetAll = false;
|
||||
@ -818,7 +774,7 @@ namespace XmlUtils
|
||||
|
||||
return oNodes;
|
||||
}
|
||||
bool CXmlNode::GetChilds(CXmlNodes& oXmlNodes)
|
||||
bool CXmlNode::GetChilds(std::vector<CXmlNode>& oXmlNodes)
|
||||
{
|
||||
bool bRes = false;
|
||||
if (IsValid())
|
||||
@ -858,10 +814,10 @@ namespace XmlUtils
|
||||
}
|
||||
return bRes;
|
||||
}
|
||||
bool CXmlNode::GetNodes(const std::wstring& sName, CXmlNodes& oNodes)
|
||||
bool CXmlNode::GetNodes(const std::wstring& sName, std::vector<CXmlNode>& oNodes)
|
||||
{
|
||||
oNodes = GetNodes(sName);
|
||||
return (0 != oNodes.GetCount());
|
||||
return (0 != oNodes.size());
|
||||
}
|
||||
|
||||
CXmlNode& CXmlNode::operator=(const CXmlNode& oSrc)
|
||||
|
||||
Reference in New Issue
Block a user