我试图看看我是否可以使用XMLUnit来比较以下两个不同的XML.我使用Diff类来比较以下两个XML并检查类似的返回false.
XML One
<Required>
<Question desc="Are you single?">
<Answers>
<Answer value="Yes"/>
<Answer value="No"/>
</Answers>
</Question>
</Required>
XML Two
<Required>
<Question desc="Are you single?">
<Answers>
<Answer value="No"/> ''Order is reversed in XML two
<Answer value="Yes"/>
</Answers>
</Question>
</Required>
Run Code Online (Sandbox Code Playgroud)
这是我的JAVA代码:
Diff xmlDiff;
try {
xmlDiff = new Diff(xmlOne, xmlTwo);
xmlDiff.overrideElementQualifier(new RecursiveElementNameAndTextQualifier());
} catch (Exception e) { }
boolean isEqual = xmlDiff.similar()
Run Code Online (Sandbox Code Playgroud) 我有以下表定义和样本数据.在下表中,"客户产品和日期"是关键字段
Table One
Customer Product Date SALE
X A 01/01/2010 YES
X A 02/01/2010 YES
X A 03/01/2010 NO
X A 04/01/2010 NO
X A 05/01/2010 YES
X A 06/01/2010 NO
X A 07/01/2010 NO
X A 08/01/2010 NO
X A 09/01/2010 YES
X A 10/01/2010 YES
X A 11/01/2010 NO
X A 12/01/2010 YES
Run Code Online (Sandbox Code Playgroud)
在上表中,我需要找到没有销售的N或N个连续记录,销售值为'NO'例如,如果N为2,则结果集将返回以下内容
Customer Product Date SALE
X A 03/01/2010 NO
X A 04/01/2010 NO
X A 06/01/2010 NO
X A 07/01/2010 NO
X A 08/01/2010 NO …
Run Code Online (Sandbox Code Playgroud) 我创建了一个可以转换单个XML文件的XSLT文件.但是,我有几百个带有多个xml文件的目录.在XSLT中是否有办法转换所有这些文件.我正在使用集合函数来获取所有文件的列表.但是,现在还不确定如何应用转换.
这是我的示例XSLT文件.基本上,我想循环遍历所有xml文件并在单个文件上应用模板表.所有这些转换的输出需要在一个单独的平面文本文件中.
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:foo="http://whatever">
<xsl:output method="text" encoding="ISO-8859-1"/>
<xsl:template name="process">
<xsl:variable name="files" select="collection('file:///C:/files/testResults?select=*.xml;recurse=yes')"/>
<xsl:for-each select="$files">
<xsl:if test="(not(contains(document-uri(.), 'SuiteSetUp'))) and (not(contains(document-uri(.), 'SuiteTearDown')))">
<xsl:value-of select="tokenize(document-uri(.), '/')[last()]"></xsl:value-of>
<xsl:apply-templates select="/testResults/result/tables/table[14]">
<xsl:with-param name="title" select="/testResults/rootPath"></xsl:with-param>
</xsl:apply-templates>
<xsl:apply-templates select="/testResults/result/tables/table[15]"/>
</xsl:if>
</xsl:for-each>
</xsl:template>
<xsl:template match="table">
<xsl:param name="testName"></xsl:param>
<xsl:for-each select="row">
<xsl:if test="position() > 2">
<xsl:variable name="choices" select="col[2]"></xsl:variable>
<xsl:if test="contains($choices, 'fail')">
<xsl:value-of select="$testName"></xsl:value-of>
<xsl:text>|</xsl:text>
<xsl:value-of select="col[1]"></xsl:value-of>
<xsl:text>|</xsl:text>
<xsl:value-of select="foo:getCorrectChoices(col[2])"></xsl:value-of>
<xsl:text>|</xsl:text>
<xsl:value-of select="foo:getExpectedChoices(col[2])"></xsl:value-of>
<xsl:text>|</xsl:text>
<xsl:call-template name="NewLine"/>
</xsl:if>
</xsl:if>
</xsl:for-each>
</xsl:template>
<xsl:template name="NewLine">
<xsl:text>
</xsl:text>
</xsl:template>
<xsl:function name="foo:getCorrectChoices">
<xsl:param name="content"></xsl:param>
<xsl:analyze-string select="$content" …
Run Code Online (Sandbox Code Playgroud) 我使用Spring NamedParameterJdbcTemplate从表中获取一些值.出于某种原因,查询在我的Java应用程序中运行速度非常慢,而不是在SQL Management Studio上运行相同的查询.我也注意到在分析器中,准备好的语句不会被重用.如果我多次在我的JAVA应用程序中运行相同的查询,我会看到正在执行的不同预处理语句.因此,不确定为什么语句不会被重用.性能是否因为我在查询中使用IN子句而变慢?
这是我的示例java代码
StringBuilder vQuery = new StringBuilder();
vQuery.append(" SELECT SUM(Qty) FROM vDemand");
vQuery.append(" WHERE ProductID = :ProductID");
vQuery.append(" AND [Date] >= :StartDate AND [Date] <= :EndDate");
vQuery.append(" AND CustomerID IN ( :CustomerID )");
MapSqlParameterSource vNamedParameters = new MapSqlParameterSource();
vNamedParameters.addValue("ProductID", aProductID);
vNamedParameters.addValue("CustomerID", aCustomerlIDs);
vNamedParameters.addValue("StartDate", aDate, Types.TIMESTAMP);
vNamedParameters.addValue("EndDate", aDate, Types.TIMESTAMP);
int vTotalQuantity = this.getNamedParameterJdbcTemplate().queryForInt(vQuery.toString(), vNamedParameters);
return vTotalQuantity;
Run Code Online (Sandbox Code Playgroud) 我试图了解如何处理两个可能有重复的列表的联合或合并.例如,List1具有{A,B,C},List2具有{B,C,D}.我试图使用Union操作并得到一个带有值(A,B,C,D)的新列表.但是,我需要第二个列表中的B&C值,而不是第一个.有没有办法指定联合方法,重复使用的值.
我现在使用的代码是
var newList = List1.Union<Object>(List2).ToList();
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助.Javid
是否有任何.net库可用于univot excel数据?我目前正在使用LinqToExcel框架从电子表格中读取数据,因此不确定是否有可用于执行unpivot的动态linq查询.谢谢你的任何建议.顺便说一下,我正在寻找一种可以处理多个列的解决方案.
示例原始表
Product Location Customer1 Customer2 Customer3
A X 10 20 100
Run Code Online (Sandbox Code Playgroud)
Destinaton表
Product Location Customer Demand
A X Customer1 10
A X Customer2 20
A X Customer3 100
Run Code Online (Sandbox Code Playgroud) 我尽力提出一个合适的标题,如果它没有多大意义,那就找借口.我希望在下面更好地解释它.我们有一个基于.Net框架的应用程序,并使用SQL作为数据存储.与任何应用程序一样,此应用程序需要支持可扩展性,例如支持其他数据转换和验证.
示例:将应用程序视为提供一组输入表的工具,用户可以使用access或excel(已有UI和网格)将数据导入到该表中以允许数据导入.导入数据后,该工具会创建一个中间模型,并对输入数据执行一些计算,然后以预定义的格式抛出结果.输入表模式和中间模型模式是固定的,不会发生任何更改.在从输入数据导出中间模型的阶段需要可扩展性.允许用户能够更改数据的派生方式,例如,不是按一个字段分组,而是允许按多个字段进行分组等.
为了支持这种灵活性,我看到我可以看到两种基本方法
选项1:创建映射到sql数据模型的业务模型,并将业务模型公开给用户,以允许它们覆盖转换并创建新的转换(例如,使用LINQ或纯C#)
选项2:公开整个sql数据模型,并允许用户嵌入原始SQL查询以执行转换和验证.
我个人的偏好是使用选项1,因为我不喜欢允许用户直接使用底层数据表.我更喜欢更有控制的访问.但是,这种方法要求用户使用编程语言(C#或VB).另一方面,选项2可能只需要具有SQL编程知识的人来创建原始查询并直接将它们插入应用程序.但是,我认为这是一个糟糕的方法.
产品管理团队倾向于使用选项2,因为他们认为从资源角度来看它更灵活,更容易实现.
所以,我试图想出两种方法的优点和缺点,以更好地支持我对选项1的倾向.基本上,倾向于在C#或VB .net中使用编程语言而不是仅仅使用纯SQL查询.
请分享您的想法和意见.
如果可能的话,我希望joda或非joda解决方案适用于下面的场景
让我们说如果我的一周从02/05/2012开始,并且给定的当前日期是02/22/2011.我需要计算给定当前日期的周开始日期和结束日期.因此,我的解决方案应该在02/19开始一周,在02/25结束一周.为简单起见,我已将我的周开始时间设置为02/05/2011,但它可能是任何一天,我的周总有7天.
我现有的代码如下,但似乎没有按预期工作.
public Interval getWeekInterval(Date calendarStartDate, Date date)
{
Calendar sDate = Calendar.getInstance();
sDate.setTime(getMidnightDate(calendarStartDate));
Calendar eDate = Calendar.getInstance();
eDate.setTime(date);
Calendar weekStartDate = (Calendar) sDate.clone();
logger.debug("Date:" + sDate.getTime());
while (sDate.before(eDate)) {
weekStartDate = sDate;
sDate.add(Calendar.DAY_OF_WEEK_IN_MONTH, 1);
}
return new Interval(weekStartDate.getTime(), sDate.getTime());
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试执行一个组,然后是一个不同的,以验证一组列是否只映射到其他列.例如,在下面的数据集中
Brand Product Location Customer Demand
Box A Chicago Chicago 10
Box B Chicago Milwaukee 20
Cart C Madison Milwaukee 10
Cart D Chicago Milwaukee 15
Run Code Online (Sandbox Code Playgroud)
产品A,B,C有效.但是D是无效的,因为存在产品B,芝加哥作为位置和密尔沃基作为客户.我正在尝试构建一个LINQ查询来获取异常记录并遇到一些麻烦.我非常确定我的查询过于复杂.
var vDuplicateSupplierLitho = from p in vRecords
group p by new
{
Location = p["Location"].Cast<string>(),
Customer = p["Customer"].Cast<string>()
} into grp
select new
{
Location = grp.Key.Location,
Customer = grp.Key.Customer,
Products = from a in grp
group a by new { Product = a["Product"].Cast<string>() } into apngrp
where apngrp.Count() > 1 && apngrp.Select(a …
Run Code Online (Sandbox Code Playgroud)