Ulteam.SharePoint
Parser Class
Namespace: Ulteam.SharePoint
Description
Класс для парсинга текста.
Constructors
Name | Description |
---|---|
Parser(String Template) | Добавление шаблона. В шаблоне может быть несколько корневых элементов. Template: Шаблон для парсинга. |
Methods
Name | Description |
---|---|
GetFieldValue(SPListItem Item, SPField Field, ParseSetting Setting) | Получение текстового значения из Field в зависимости от типа поля. Item: Элемент списка. Field: Поле для получения значения. Setting: Настройка парсинга. |
GetResult(Boolean AsText) | Получение результата в виде текста. AsText: Вернуть результат как InnerText. Если false, то вернется XML. Значение по умолчанию: false. |
ParseFieldTag(SPListItem Item, String ItemType) | Парсинг тега Field. Вместо тега подставляется значение поля (name) элемента списка (type) SharePoint. Возможные атрибуты тега: type (тип элемента списка), name (internal name поля в списке), format (формат поля типа дата и время), separator (разделитель для полей MultiUser, MultiChoice, MultiLookup), truevalue (значение, если в поле стоит true), falsevalue (значение, если в поле стоит false). Item: Элемент списка, из которого будут браться значения. ItemType: Тип элемента списка, указанное в атрибуте type тега. Если параметр не указан, обрабатываются теги без атрибута type, либо с type=’’. |
ParseFilledTag(SPListItem Item, String ItemType) | Парсинг тега Filled. Если значение в поле (name) элемента списка (type) не пустое, то вернется InnerXml тега. Возможные атрибуты тега: type (тип элемента списка), name (internal name поля в списке). Item: Элемент списка, из которого будут браться значения. ItemType: Тип элемента списка, указанный в атрибуте type тега. Если параметр не указан, обрабатываются теги без атрибута type, либо с type=’’. |
ParseFormUrlTag(SPListItem Item, String ItemType) | Парсинг тега FormUrl. Заменяется на {InnerXml} Возможные атрибуты тега: type (тип элемента списка), name (internal name поля в списке). Item: Элемент списка, для которого находятся FormUrl. ItemType: Тип элемента списка, указанный в атрибуте type тега. Если параметр не указан, обрабатываются теги без атрибута type, либо с type=’’. |
ParseHistoryTag(XmlNode Node, String NodeType) | Парсинг тега History. Возможные атрибуты тега: type (тип элемента списка), name - название класса html элемента, из которого необходимо взять значение (InnerText). Node: Узел из HTML истории процесса с шагом, из которого необходимо взять данные. NodeType: Тип элемента, указанное в атрибуте type тега. Если параметр не указан, обрабатываются теги без атрибута type, либо с type=’’. |
Samples
/// <summary>
/// Пример парсинга HTML.
/// Парсятся теги Field, Filled, FormUrl
/// </summary>
public void ExampleParseFunction()
{
SPList list = Settings.Mock.Lists["ParserList"];
SPListItemCollection items = list.GetItems();
SPListItem mainItem = items[0];
SPListItem taskItem = items[1];
string template = @"
<div>
<div>
TextField:<Field name='Title' />
</div>
<div>
TextField:<Field type='Task' name='TextField' />
</div>
<div>
NumberField:<Field type='Task' name='NumberField' />
</div>
<div>
UserField:<Field type='Task' name='UserField' />
</div>
<div>
MultiUserField1:<Field type='Task' name='MultiUserField' />
</div>
<div>
MultiUserField2:<Field type='Task' name='MultiUserField' separator='#; ' />
</div>
<div>
ChoiceField:<Field type='Task' name='ChoiceField' />
</div>
<div>
MultiChoiceField1:<Field type='Task' name='MultiChoiceField' />
</div>
<div>
MultiChoiceField2:<Field type='Task' name='MultiChoiceField' separator='#; ' />
</div>
<div>
BooleanField1:<Field type='Task' name='BooleanField' />
</div>
<div>
BooleanField2:<Field type='Task' name='BooleanField' truevalue='да' falsevalue='нет' />
</div>
<div>
DateTimeField1:<Field type='Task' name='DateTimeField' />
</div>
<div>
DateTimeField2:<Field type='Task' name='DateTimeField' format='yyyy-MM-ddTmm:ss' />
</div>
<div>
LookupField:<Field type='Task' name='LookupField' />
</div>
<div>
MultiLookupField1:<Field type='Task' name='MultiLookupField' />
</div>
<div>
MultiLookupField2:<Field type='Task' name='MultiLookupField' separator='#; ' />
</div>
<div>
EmptyField:<Filled type='Main' name='TextField'><div>InnerXml</div></Filled>
</div>
<div>
<FormUrl name='NewForm'>
<div>NewForm</div>
</FormUrl>
</div>
<div>
<FormUrl name='DisplayForm'>
<div>DisplayForm</div>
</FormUrl>
</div>
<div>
<FormUrl name='EditForm' type='Task'>
<div>TaskEditForm</div>
</FormUrl>
</div>
</div>";
Parser parser = new Parser(template);
parser.ParseFieldTag(mainItem);
parser.ParseFieldTag(taskItem, "Task");
parser.ParseFilledTag(taskItem, "Main");
parser.ParseFormUrlTag(mainItem);
parser.ParseFormUrlTag(taskItem, "Task");
string result = parser.GetResult();
// вернется значение:
//<div>
// <div>TextField:Field Value Test 1</div>
// <div>TextField:Test text</div>
// <div>NumberField:10</div>
// <div>UserField:Test User 01</div>
// <div>MultiUserField1:Test User 01, Test User 02</div>
// <div>MultiUserField2:Test User 01#; Test User 02</div>
// <div>ChoiceField:Choice 1</div>
// <div>MultiChoiceField1:Choice 1, Choice 2</div>
// <div>MultiChoiceField2:Choice 1#; Choice 2</div>
// <div>BooleanField1:true</div>
// <div>BooleanField2:да</div>
// <div>DateTimeField1:01.01.2018</div>
// <div>DateTimeField2:2018-01-01T00:00</div>
// <div>LookupField:Title 1</div>
// <div>MultiLookupField1:Title 1, Title 2</div>
// <div>MultiLookupField2:Title 1#; Title 2</div>
// <div>EmptyField:<div>InnerXml</div></div>
// <div>
// <a href="https://{tenantName}.sharepoint.com/{webUrl}/Lists/ParserList/NewForm.aspx">
// <div>NewForm</div>
// </a>
// </div>
// <div>
// <a href="https://{tenantName}.sharepoint.com/{webUrl/Lists/ParserList/DispForm.aspx?ID=1">
// <div>DisplayForm</div>
// </a>
// </div>
// <div>
// <a href="https://{tenantName}.sharepoint.com/{webUrl}/Lists/ParserList/EditForm.aspx?ID=2">
// <div>TaskEditForm</div>
// </a>
// </div>
//</div>
}
}