小编Dom*_*nin的帖子

如何按多个值对XML数据进行分组

我需要从XML分组"Document"值.问题是因为键值(productType)可以是多个.

这是XML:

<Documents>
<Document>
    <id>1</id>
    <title>title1</title>
    <productTypes>
        <productType id="x1">Capital Costs Analysis Forum - Brazil</productType>
  <productType id="x3">Environmental, Health and Safety &amp; Sustainability</productType>
    </productTypes>
</Document>
<Document>
    <id>2</id>
    <title>title2</title>
    <productTypes>
  <productType id="x1">Capital Costs Analysis Forum - Brazil</productType>
    </productTypes>
</Document>
<Document>
    <id>3</id>
    <title>title3</title>
    <productTypes>
  <productType id="x3">Environmental, Health and Safety &amp; Sustainability</productType>
    </productTypes>
</Document>
<Document>
    <id>4</id>
    <title>title4</title>
    <productTypes>
        <productType id="x2">Defense, Risk &amp; Security</productType>
    </productTypes>
</Document>
Run Code Online (Sandbox Code Playgroud)

这就是我尝试的:

var documents = from document in some.Descendants("Document")
                group document by (string)document
                    .Element("productTypes")
                    .Elements("productType")
                    .First() into docGroup
select docGroup;
Run Code Online (Sandbox Code Playgroud)

只有有一个productType元素,我的代码才有效.如果productType有多个值,如何更改我的代码?

.net c# xml linq linq-to-xml

6
推荐指数
1
解决办法
741
查看次数

在GetSystemWideList中使用PublishTransactionState过滤器不起作用

我在Core Service(SDL Tridion 2011 SP1)上使用GetSystemWideList操作时尝试为PublishTransactionState应用过滤器.

如果我尝试设置过滤器值,如PublishTransactionState.ScheduledForPublish或PublishTransactionState.WaitingForPublish,我得不到任何结果,即使我确定在队列中有这种状态的发布事务.

var filter = new PublishTransactionsFilterData {ForRepository = new LinkToRepositoryData {IdRef = "tcm:0-69-1"}};
filter.PublicationTarget = new LinkToPublicationTargetData { IdRef = "tcm:0-1-65537" };
filter.PublishTransactionState = PublishTransactionState.ScheduledForPublish;
//filter.StartDate = DateTime.Today.AddDays(-1);

var transactions = coreServiceSession.GetSystemWideList(filter);
Console.WriteLine(transactions.Count() + " publish transactions");
Run Code Online (Sandbox Code Playgroud)

启用filter.PublishTransactionState行后,核心服务始终返回0结果.通过此行注释,我们将按预期获取发布事务列表,其中包括一些状态为SceduledForPublish的事务.

其他过滤器,如StartDate过滤器按预期工作.

有人这个有用吗?

tridion tridion-2011

6
推荐指数
1
解决办法
461
查看次数

为什么使用REL时我的Tridion二进制链接不显示?

我正在生成Tridion二进制链接,如下所示:

  1. Razor TBB为二进制链接生成链接解析器语法
  2. 链接解析器TBB生成TCDL.

输出将作为输出类型REL的动态组件模板发布.发布目标指定ASP.NET.

我在代理数据库的COMPONENT_PRESENTATIONS表中看到的内容输出如下:

<tcdl:Link type="binary" origin="tcm:0-0-0" 
           destination="tcm:34-669" templateURI="tcm:0-0-0" 
           linkAttributes="" textOnFail="true" addAnchor="" 
           variantId="">Document2</tcdl:Link>
Run Code Online (Sandbox Code Playgroud)

所以你至少可以看到文字"Document2"

如果我手工制作二进制链接控件,<tridion:BinaryLink..../>这可以正常工作,但是上面列出的TCDL没有产生可见的输出.

可能出了什么问题?我接下来应该调查什么?

tridion tridion-content-delivery tridion-2011

6
推荐指数
1
解决办法
356
查看次数

非贪婪的正则表达式量词给出了贪心的结果

我有一个.net正则表达式,我正在使用Windows Powershell进行测试.输出如下:

> [System.Text.RegularExpressions.Regex]::Match("aaa aaa bbb", "aaa.*?bbb")


Groups   : {aaa aaa bbb}
Success  : True
Captures : {aaa aaa bbb}
Index    : 0
Length   : 11
Value    : aaa aaa bbb
Run Code Online (Sandbox Code Playgroud)

我的期望是使用?量词会导致匹配aaa bbb,因为第二组的a足以满足表达式.我对非贪婪量词的理解是否有缺陷,或者我测试不正确?

注意:这与正则表达式明显不同,nongreedy是贪婪的

.net regex non-greedy

6
推荐指数
2
解决办法
1787
查看次数

SED流编辑器是否有.NET端口

SED流编辑器是否有.NET端口?理想情况下,它将是开源的,但是在此阶段,我不排除任何问题。

我已经用谷歌搜索了这个,没有任何明显的成功,所以这里的第二个问题是:创建一个要困难多少?

我假设SED的来源在C中。如果我的主要问题的答案是“否”,那么将此类项目移植到C#的指针/策略将不胜感激。

.net c# porting sed

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

映射到具有内部构造函数的自定义类型

我们正在尝试映射一个对象 - 一个Tridion Outbound Email Contact - 它有一个带有内部构造函数的自定义字典类型属性 - ExtendedDetailCollection

从对象到Viewmodel的精细映射

Mapper.CreateMap<Contact,ContactViewModel>()
    .ForMember(x=>x.Name, m=>m.MapFrom(x=>x.ExtendedDetails["Name"].StringValue))
Run Code Online (Sandbox Code Playgroud)

但另一种方式不起作用

我们尝试过:

Mapper.CreateMap<ContactViewModel,Contact>()
    .ForMember(x=>x.ExtendedDetails["Name"].Value, m => m.MapFrom(x=>x.Name));
Run Code Online (Sandbox Code Playgroud)

但是会引发运行时异常.

编辑:异常的消息是:

AutoMapper.AutoMapperConfigurationException:仅对类型上的顶级单个成员支持成员的自定义配置.

我们还尝试了各种类型的转换器和值解析器,但是没有一个允许我们获取被映射到的对象,这是我们需要访问以映射ExtendedDetails对象.

Mapper.CreateMap<ContactViewModel,Contact>()
    .ForMember(x=>x.ExtendedDetails, m => ????);
Run Code Online (Sandbox Code Playgroud)

是否有这样的模式或使用静态方法更容易?

.net c# exception-handling automapper tridion

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

Tridion CM报告"无法从1个数据源检索数据"

在Tridion Explorer中打开各种弹出窗口时,消息中心会显示以下消息:

Couldn't retrieve data from 1 datasources
Run Code Online (Sandbox Code Playgroud)

这意味着什么,我该如何预防呢?

编辑:是的 - 所有说UGC的人都是对的.实际上,问题不在于引用Web服务,而在于它们无法正常工作.因此,如果您正在设置UGC,请确保(使用您的浏览器)检查OData服务不仅可用,但它们对查询做出正确响应.

ugc tridion

5
推荐指数
2
解决办法
164
查看次数

获取具有核心服务的结构组TCM URI的子结构组

如何在给定具有核心服务的结构组TCM URI的情况下获取所有子结构组?

我尝试使用此代码:

ItemsFilterData sgFilter = new RepositoryItemsFilterData 
    { ItemTypes = new[] { ItemType.StructureGroup }, 
      Recursive = true, 
      BaseColumns = ListBaseColumns.Id };

XElement listXml;

using (CoreServiceClient client = _coreServiceProvider.GetCoreServiceClient())
{
    listXml = XElement.Parse(
              client.ProxyClient.GetListXml(structureGroupUri, sgFilter)
              .OuterXml);
}
Run Code Online (Sandbox Code Playgroud)

但是我收到一条错误,上面写着"意外的项目类型:StructureGroup".

tridion tridion-2011

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

Tridion 2011工作流次要版本使用事件处理程序自定义代码递增

我们还有Tridion 2011和页面处理工作流程.我们在页面预保存上有事件处理程序.当用户保存页面时,调用事件处理程序来修改页面元数据并启动工作流程.因此,对于每个编辑器保存点击,页面的次要版本控制将变为0.3.所以基本上:0.1 - 页面的Tridion版本保存0.2 - 为保存页面元数据而执行的事件处理程序代码,并且由于Save()调用,此代码再次被调用以导致下一个次要版本0.3 - 执行相同的事件处理程序代码.

我想要实现的是将每个用户的次要版本保持为0.1保存点击.

我已经尝试过Pre Save Post Save,Pre Check in和Post Check in并更改了执行顺序,即事件系统订阅调用的最后一个参数,但没有任何帮助.所以pl.救命 :)

workflow events version tridion tridion-2011

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

如何从PowerShell获取默认网关?

如果计算机有多个网关,如何使用PowerShell确定哪个是默认网关?

powershell

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