给出以下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) > 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) 在我们的构建服务器(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服务器上它确实有效.
戴夫
使用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) 当我尝试在具有一对多关系的任何表上执行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) 我正在尝试对使用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中的继承表的属性?
给出以下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"的注释.
有任何想法吗?
谢谢
戴夫
我创建了一个名为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可能非常大.
有人对我有建议吗?我已经尝试检查了很多博客,但似乎没有针对此类错误的解决方案.
戴夫
我正在尝试保留我的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) 我有一个如下的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的副本,没有黑色的元素列表说没有element3和repeatingelement2.
例如输出将是:
<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)