我正在尝试在XML中使用tostring方法来获取XML的"漂亮"版本作为字符串.lxml站点上的示例显示了此示例:
>>> import lxml.etree as etree
>>> root = etree.Element("root")
>>> print(root.tag)
root
>>> root.append( etree.Element("child1") )
>>> child2 = etree.SubElement(root, "child2")
>>> child3 = etree.SubElement(root, "child3")
>>> print(etree.tostring(root, pretty_print=True))
<root>
<child1/>
<child2/>
<child3/>
</root>
Run Code Online (Sandbox Code Playgroud)
但是我的输出,运行那些确切的行是:
b'<root>\n <child1/>\n <child2/>\n <child3/>\n</root>\n'
Run Code Online (Sandbox Code Playgroud)
我安装的lxml版本是否有错误?从教程中逐字逐句的单词似乎很奇怪.
我写了一个类,必须与一些旧代码接口,这些代码需要一些C风格的数组(或者至少是指向第一个元素的指针)作为参数.
这些数组是我的类的成员,它们特别大(50kb)所以我想把它们放在堆上,这样我的类的对象在堆栈上不是很大.我非常相信使用资源管理对象,所以我宁愿不自己在堆上管理这些数组.
我发现使用unique_ptr特别适合这项工作.例如:
std::unique_ptr<SOMETYPE[]> someArrayName
和使用:
someArrayName(new SOMETYPE[someLargeSize])
在我的构造函数的初始化列表中.这允许我使用这些作为常规C数组的.get()方法,使用需要作为参数的函数的方法,我不必自己管理内存.但我刚刚意识到我的同事(实际编译我们的代码的版本)仍然在VS2008上,显然缺乏对C++ 0x功能的支持unique_ptr.首先,我目前使用unique_ptr的解决方案是一个好的解决方案吗?如果是这样的话,是否有一个替代品来维持我需要的所有行为,比如提升?