小编Cra*_*lla的帖子

在XPath XSL中执行"分组依据"查询

给出以下XML:

<results name="queryResults">
  <int name="intfield1:[* TO 10]">11</int> 
  <int name="intfield2:[10 TO 20]">9</int> 
  <int name="intfield1:[10 TO 20]">12</int> 
</results>
Run Code Online (Sandbox Code Playgroud)

我想生成这个XML:

<results>
    <field name="numberfield1">
        <value name="[* TO 10]">11</value>
        <value name="[10 TO 10]">12</value>
    </field>
    <field name="numberfield2">
        <value name="[10 TO 20]">9</value>
    </field>
</results>
Run Code Online (Sandbox Code Playgroud)

我想不出怎么在XSL中这样做主要是因为我想要按数字字段分组..所有我能想到的是这样的:

<xsl:if test="count(results/int) &gt; 0">
    <results>
    <xsl:for-each select="results/int">
        <field>
            <xsl:attribute name="name">
                <xsl:value-of select="substring-before(@name, ':')"/></xsl:attribute>
            <value>
                <xsl:attribute name="name">
                    <xsl:value-of select="substring-after(@name, ':') "/>
                </xsl:attribute>
                <xsl:value-of select="."/>
            </value>
        </field>
    </xsl:for-each>
    </results>
</xsl:if>
Run Code Online (Sandbox Code Playgroud)

然而,这不会产生很好的分组列表,而是我得到这个:

<results>
    <field name="numberfield1">
        <value name="[* TO 10]">11</value>
    </field>
    <field name="numberfield2">
        <value name="[10 TO …
Run Code Online (Sandbox Code Playgroud)

xml xslt xpath xslt-1.0

5
推荐指数
1
解决办法
1万
查看次数

在Build Server上的CLR Storedprocedure项目上执行MSBuild时出错

在我们的构建服务器(Team City)上使用MSBuild构建CLR Storedprocedure项目时,我们收到以下错误:

错误MSB4019:找不到导入的项目"C:\ WINDOWS\Microsoft.NET\Framework\v2.0.50727\SqlServer.targets".确认声明中的路径是否正确,以及该文件是否存在于磁盘上

我已经检查过磁盘上是否存在该文件,确定它不存在.我已经检查了自己的机器,它确实存在.

我真的不想开始手动将文件复制到构建服务器.

这是从csproj文件导入到proj文件的行:

  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  <Import Project="$(MSBuildToolsPath)\SqlServer.targets" />
Run Code Online (Sandbox Code Playgroud)

这是我们的Team City Server运行的proj文件中的行:

<Import Project="..\$(ProjectName).csproj"/>
Run Code Online (Sandbox Code Playgroud)

我的问题是:

这个文件来自哪里?它是Visual Studio安装的一部分吗?或者是否有一些重新分发包允许我在我们的构建服务器上编译这个项目?

谢谢

顺便说一句..如果我只是将文件复制到Build服务器上它确实有效.

戴夫

msbuild import csproj clrstoredprocedure

5
推荐指数
1
解决办法
1918
查看次数

使用XmlSerializer序列化DataType ="time"字段

使用XmlSerializer序列化DateTime字段时,我得到一个奇怪的结果.

我有以下课程:

public class RecordExample
{
    [XmlElement("TheTime", DataType = "time")]
    public DateTime TheTime { get; set; }

    [XmlElement("TheDate", DataType = "date")]
    public DateTime TheDate { get; set; }

    public static bool Serialize(
        Stream stream, object obj, Type objType, Encoding encoding)
    {
        try
        {
            var settings = new XmlWriterSettings { Encoding = encoding };

            using (var writer = XmlWriter.Create(stream, settings))
            {
                var xmlSerializer = new XmlSerializer(objType);
                if (writer != null) xmlSerializer.Serialize(writer, obj);
            }

            return true;
        }
        catch (Exception)
        {
            return false; …
Run Code Online (Sandbox Code Playgroud)

.net c# xml xml-serialization

5
推荐指数
1
解决办法
1万
查看次数

Fluent NHibernate Mapping设置为AllDeleteOrphan,但仍尝试将DB中的外键置空

当我尝试在具有一对多关系的任何表上执行ISession.Delete时,我收到了NHibernate的错误.

NHibernate试图将子表中的父表的外键设置为null,而不是仅删除子表行.

这是我的域名:

public class Parent
{

    public Parent()
    {
        _children = new List<Child>();
    }

    public int Id { get; set; }
    public string SimpleString { get; set; }
    public DateTime? SimpleDateTime { get; set; }

    private IList<Child> _children;
    public IEnumerable<Child> Children
    {
        get { return _children; }
    }
    public void AddChild(Child child)
    {
        child.Parent = this;
        _children.Add(child);
    }
}


public class Child
{
    public int Id { get; set; }
    public string SimpleString { get; set; }
    public DateTime? …
Run Code Online (Sandbox Code Playgroud)

nhibernate nhibernate-mapping fluent-nhibernate

5
推荐指数
1
解决办法
5226
查看次数

linq到实体继承查询问题

我正在尝试对使用Table per Type继承的表执行linq to entity查询.

我遇到的问题是我无法获取Inhertied表中的属性只有基表上的属性.

var qry = from i in _DB.BaseTable
where i is catalogueModel.InheritedTable
// Field Doesn't Exist
// && i.InheritedTableField == "Value"
select i;
Run Code Online (Sandbox Code Playgroud)

当我尝试将继承表转换为它的类型时......

var qry = from i in _DB.BaseTable
where i is catalogueModel.InheritedTable
&& (i as catalogueModel.InheritedTable).InheritedTableField  == "Value"
select i;
Run Code Online (Sandbox Code Playgroud)

...代码编译但我得到一个很酷的错误,读取

工作表中只允许使用文本指针,而不允许使用text,ntext或image列.查询处理器生成了一个查询计划,该计划需要工作表中的text,ntext或image列.

我想我的问题是当你使用每种类型的表时,你应该如何访问linq中的继承表的属性?

c# linq ado.net linq-to-entities entity-framework

4
推荐指数
1
解决办法
2722
查看次数

在xpath/xsl中按内部xml选择注释

给出以下xml文档

<root>
   <childnode0/>
   <childnode2/>
   <!--Comment1-->
   <childnode3/>
   <childnode4/>
   <!--Comment2-->
</root>
Run Code Online (Sandbox Code Playgroud)

我知道xpath选择xsl中特定级别的所有注释

string xPath = "/root/comment()";
Run Code Online (Sandbox Code Playgroud)

但是我想选择内部xml为"Comment2"的注释.

有任何想法吗?

谢谢

戴夫

xml xslt xpath comments

4
推荐指数
1
解决办法
2643
查看次数

GZipStream正在切断XML的最后一部分

我创建了一个名为AddGZip的扩展方法,如下所示:

public static void AddGZip(this HttpResponse response)
{
    response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);
    response.AppendHeader("Content-Encoding", "gzip");
}
Run Code Online (Sandbox Code Playgroud)

这是代码的一个非常简化的版本:

var response = HttpContext.Current.Response;
var request = HttpContext.Current.Request;
var result = File.ReadAllText(path);
if (request.SupportsGZip)
{
  response.AddGZip();
}
response.Write(result);
response.Flush();
Run Code Online (Sandbox Code Playgroud)

当您在支持GZip的Web浏览器中查看响应时,会出现如下错误:

"XML解析错误:未关闭的令牌位置:http://webserver1/1234.xml 第78行,第1列:"

当我查看源代码时,它基本上错过了>XML文件末尾的最后一个.所以1或2个字节.

如果我注释掉AddGZip线,它可以正常工作.但是我真的想支持GZip,因为XML可能非常大.

有人对我有建议吗?我已经尝试检查了很多博客,但似乎没有针对此类错误的解决方案.

戴夫

c# asp.net gzip httpresponse gzipstream

4
推荐指数
1
解决办法
2701
查看次数

为同一复杂类型的不同节点名称调用相同的xsl:template

我正在尝试保留我的xsl DRY,因此我想为XML文档的2个部分调用相同的模板,这些部分碰巧是相同的复杂类型(ContactDetails和AltContactDetails).给出以下XML:

<?xml version="1.0" encoding="UTF-8"?>
<RootNode>
    <Name>Bob</Name>
    <ContactDetails>
        <Address>
            <Line1>1 High Street</Line1>
            <Town>TownName</Town>
            <Postcode>AB1 1CD</Postcode>
        </Address>
        <Email>test@test.com</Email>
    </ContactDetails>
    <AltContactDetails>
        <Address>
            <Line1>3 Market Square</Line1>
            <Town>TownName</Town>
            <Postcode>EF2 2GH</Postcode>
        </Address>
        <Email>bob@bob.com</Email>
    </AltContactDetails>
</RootNode>
Run Code Online (Sandbox Code Playgroud)

我写了一个XSL样式表,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:template match="/">
        <PersonsName>
            <xsl:value-of select="RootNode/Name"/>
        </PersonsName>
        <xsl:call-template name="ContactDetails">
            <xsl:with-param name="data"><xsl:value-of select="RootNode/ContactDetails"/></xsl:with-param>
            <xsl:with-param name="elementName"><xsl:value-of select="'FirstAddress'"/></xsl:with-param>
        </xsl:call-template>
        <xsl:call-template name="ContactDetails">
            <xsl:with-param name="data"><xsl:value-of select="RootNode/AltContactDetails"/></xsl:with-param>
            <xsl:with-param name="elementName"><xsl:value-of select="'SecondAddress'"/></xsl:with-param>
        </xsl:call-template>
    </xsl:template>
    <xsl:template name="ContactDetails">
        <xsl:param name="data"></xsl:param>
        <xsl:param name="elementName"></xsl:param>
        <xsl:element name="{$elementName}">
            <FirstLine>
                <xsl:value-of select="$data/Address/Line1"/>
            </FirstLine>

            <Town>
                <xsl:value-of select="$data/Address/Town"/>
            </Town>
            <PostalCode>
                <xsl:value-of …
Run Code Online (Sandbox Code Playgroud)

xslt templates node-set

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

使用除黑色元素列表之外的所有元素复制Xml文档

我有一个如下的Xml文档:

<root>
    <record>
        <element1>value1</element1>
        <element2>value2</element2>
        <element3>value3</element3>
        <element4>value4</element4>
        <element5>value5</element5>
        <repeatingelement1>value 1.1</repeatingelement1>
        <repeatingelement1>value 1.2</repeatingelement1>
        <repeatingelement1>value 1.3</repeatingelement1>
        <repeatingelement2>value 2.1</repeatingelement2>
        <repeatingelement2>value 2.2</repeatingelement2>
        <repeatingelement2>value 2.3</repeatingelement2>
    </record>
    <record>
        <element1>a</element1>
        <element2>b</element2>
        <element3>c</element3>
        <element4>d</element4>
        <element5>e</element5>
        <repeatingelement1>a 1.1</repeatingelement1>
        <repeatingelement1>a 1.2</repeatingelement1>
        <repeatingelement1>a 1.3</repeatingelement1>
        <repeatingelement2>b 2.1</repeatingelement2>
        <repeatingelement2>b 2.2</repeatingelement2>
        <repeatingelement2>b 2.3</repeatingelement2>
    </record>
    <record>
        <element1>value1</element1>
        <element2>value2</element2>
        <element3>value3</element3>
        <element4>value4</element4>
        <element5>value5</element5>
        <repeatingelement1>value 1.1</repeatingelement1>
        <repeatingelement1>value 1.2</repeatingelement1>
        <repeatingelement1>value 1.3</repeatingelement1>
        <repeatingelement2>value 2.1</repeatingelement2>
        <repeatingelement2>value 2.2</repeatingelement2>
        <repeatingelement2>value 2.3</repeatingelement2>
    </record>
</root>
Run Code Online (Sandbox Code Playgroud)

我希望能够得到一个Xml的副本,没有黑色的元素列表说没有element3repeatingelement2.

例如输出将是:

<root>
    <record>
        <element1>value1</element1>
        <element2>value2</element2>
        <element4>value4</element4>
        <element5>value5</element5>
        <repeatingelement1>value 1.1</repeatingelement1>
        <repeatingelement1>value 1.2</repeatingelement1>
        <repeatingelement1>value 1.3</repeatingelement1>
    </record>
    <record> …
Run Code Online (Sandbox Code Playgroud)

xml xslt xslt-1.0

0
推荐指数
1
解决办法
2458
查看次数