小编inv*_*ass的帖子

如何通过Xml属性重命名类名?

假设我有一个名为Song的XML可序列化类:

[Serializable]
class Song
{
    public string Artist;
    public string SongTitle;
}
Run Code Online (Sandbox Code Playgroud)

为了节省空间(并且还对XML文件进行半混淆),我决定重命名xml元素:

[XmlRoot("g")]
class Song
{
    [XmlElement("a")]
    public string Artist;
    [XmlElement("s")]
    public string SongTitle;
}
Run Code Online (Sandbox Code Playgroud)

这将生成如下的XML输出:

<Song>
  <a>Britney Spears</a>
  <s>I Did It Again</s>
</Song>
Run Code Online (Sandbox Code Playgroud)

我想重命名/重新映射类/对象的名称.比如,在上面的例子中,我希望将类Song重命名为g.因此,生成的xml应如下所示:

<g>
  <a>Britney Spears</a>
  <s>I Did It Again</s>
</g>
Run Code Online (Sandbox Code Playgroud)

是否可以通过xml-attributes重命名类名?

我不希望手动创建/遍历DOM,所以我想知道它是否可以通过装饰器实现.

提前致谢!

更新:哎呀!这次我真的再次做到了!忘了提 - 我实际上是在序列化XML中的Song对象列表.

这是序列化代码:

    public static bool SaveSongs(List<Song> songs)
    {
            XmlSerializer serializer = new XmlSerializer(typeof(List<Song>));
            using (TextWriter textWriter = new …
Run Code Online (Sandbox Code Playgroud)

c# xml xml-serialization

63
推荐指数
3
解决办法
6万
查看次数

将十进制变量拆分为积分和分数部分

我试图从十进制值中提取积分和小数部分(两个部分应该是整数):

decimal decimalValue = 12.34m;
int integral = (int) decimal.Truncate(decimalValue);
int fraction = (int) ((decimalValue - decimal.Truncate(decimalValue)) * 100);
Run Code Online (Sandbox Code Playgroud)

(为了我的目的,十进制变量最多包含2个小数位)

有没有更好的方法来实现这一目标?

c# decimal integral fractions

20
推荐指数
2
解决办法
3万
查看次数

Python:'super'对象没有属性'attribute_name'

我试图从基类访问变量.这是父类:

class Parent(object):
    def __init__(self, value):
        self.some_var = value
Run Code Online (Sandbox Code Playgroud)

这是儿童班:

class Child(Parent):
    def __init__(self, value):
        super(Child, self).__init__(value)

    def doSomething(self):
        parent_var = super(Child, self).some_var
Run Code Online (Sandbox Code Playgroud)

现在,如果我尝试运行此代码:

obj = Child(123)
obj.doSomething()
Run Code Online (Sandbox Code Playgroud)

我得到以下异常:

Traceback (most recent call last):
  File "test.py", line 13, in <module>
    obj.doSomething()
  File "test.py", line 10, in doSomething
    parent_var = super(Child, self).some_var
AttributeError: 'super' object has no attribute 'some_var'
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?在Python中从基类访问变量的推荐方法是什么?

python attributes super

15
推荐指数
2
解决办法
3万
查看次数

正则表达式:重复捕获组

我必须从ASCII文本文件中解析一些表.这是一个部分样本:

QSMDRYCELL   11.00   11.10   11.00   11.00    -.90      11     11000     1.212
RECKITTBEN  192.50  209.00  192.50  201.80    5.21      34      2850     5.707
RUPALIINS   150.00  159.00  150.00  156.25    6.29       4        80      .125
SALAMCRST   164.00  164.75  163.00  163.25    -.45      80      8250    13.505
SINGERBD    779.75  779.75  770.00  773.00    -.89       8        95      .735
SONARBAINS   68.00   69.00   67.50   68.00     .74      11      3050     2.077
Run Code Online (Sandbox Code Playgroud)

该表由1列文本和8列浮点数组成.我想通过正则表达式捕获每一列.

我对正则表达式很新.这是我提出的错误的正则表达式模式:

(\S+)\s+(\s+[\d\.\-]+){8}
Run Code Online (Sandbox Code Playgroud)

但该模式仅捕获第一列和最后一列.RegexBuddy也会发出以下警告:

您重复了捕获组本身.该组将仅捕获最后一次迭代.在重复组周围放置捕获组以捕获所有迭代.

我已经咨询了他们的帮助文件,但我不知道如何解决这个问题.

如何单独捕获每列?

.net c# regex

12
推荐指数
3
解决办法
2万
查看次数

Oracle-SQL:生成循环复合序列

我想以下列格式生成复合序列:

<Alphabet><2 digit numeric code>
Run Code Online (Sandbox Code Playgroud)

每个字母系列的数值范围为00到99.

初始值为A00,后续值为A01,A02等.到达A99后,下一个序列应该继续B00.当"B"系列耗尽时,它将移动到C系列(即C00),依此类推.序列将继续,直到达到Z99 - 此时它将重置回A00.

如何在SQL(或PL/SQL)中完成?

sql oracle plsql sequence

3
推荐指数
1
解决办法
1280
查看次数

T-SQL - 动态计算布尔字段

我正在使用 SQL Server 2008。

假设我有两个假设的表格,如下所示:

CREATE TABLE [Department](
    [Id]            int    IDENTITY(1,1),
    [ManagerId]     int    NULL, -- << Foreign key to the Person table
    -- other fields
)

CREATE TABLE [Person](
    [Id]            int    IDENTITY(1,1),
    [DepartmentId]  int    NOT NULL, -- << Foreign key to the Department table
    -- other fields
)
Run Code Online (Sandbox Code Playgroud)

现在,我想返回表中的行列表[Person](即给定部门的员工列表)。[ManagerId]这些行中只有一(或零)行与表中的字段匹配[Department]。我想用布尔字段动态标记匹配的行...生成的行集将类似于以下架构:

[Id]        INT,
[IsManager] BIT NOT NULL DEFAULT 0,
-- other fields
Run Code Online (Sandbox Code Playgroud)

当匹配时,该[IsManager]字段将为 TRUE 。[Department].[ManagerId][Person].[Id]

对于两个(或更多)查询来说,这是相当简单的。但是如何使用单个 SQL 语句来实现这一点呢?

t-sql sql-server-2008

3
推荐指数
1
解决办法
6918
查看次数