Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / XML, извлечение значения элемента / 16 сообщений из 16, страница 1 из 1
18.03.2014, 14:32
    #38589480
Vova_1805
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML, извлечение значения элемента
Среда Visual Basic STUDIO’2010 Professional
Как поставить несколько пробелов перед ценой, т.е.
После имени "Wheat Bread"?
Вывод в TextBox.
Спасибо

Ниже файл "Simple.xml"
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<?xml version="1.0"?>
<!-- This simple data represents food items in a grocery store -->
<GroceryStore>
	<StoreName>Fourth Coffee</StoreName>  
	<Departments>
		<Department Name="Breads">
			<Item ID="B1">
				<Name>Wheat Bread</Name> 
				<Price>1.29</Price>
				<New />
			</Item>
			</Department>
	</Departments>
</GroceryStore>



Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Private Function listElementsByTag() As String
Me.loadXmlFile() ' использует файл "Simple.xml"
Dim xElem As XmlElement
Dim strTag As String
Dim writer As New StringWriter
strTag = InputBox("Enter an XPath expression to find:", "Enter Search Expression", FindNodesXPath)
If strTag.Length > 0 Then
    'Найдите группу узлов, основанную на введенном выражении XPath.
    xmlNodeList = xmlDoc.SelectNodes(strTag) ' Ссылка на объект не указывает на экземпляр объекта.
    With writer ' ВЫВОД в контрол TextBox 
        If Not xmlNodeList Is Nothing Then
            For Each xElem In xmlNodeList
                .WriteLine("InnerText: " & xElem.InnerText) ' выводит:
                ' InnerText: Wheat Bread1.29 - отсутствует пробел перед Ценой
                ' как его поставить?
            Next xElem
        End If
    End With
End If
writer.Close()
Return writer.ToString
End Function
...
Рейтинг: 0 / 0
18.03.2014, 14:58
    #38589525
pation
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML, извлечение значения элемента
Vova_1805Как поставить несколько пробелов перед ценой, т.е.
После имени "Wheat Bread"?
не использовать InnerText
...
Рейтинг: 0 / 0
19.03.2014, 15:42
    #38590788
Vova_1805
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML, извлечение значения элемента
авторне использовать InnerText
поконкретнее, если НЕ СЛОЖНО, т.к.
поиск в шедевре MSDN - НЕУДАЧНЫЙ.
Спасибо
...
Рейтинг: 0 / 0
19.03.2014, 15:58
    #38590827
Arm79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML, извлечение значения элемента
Vova_1805,

1) .//Item - или еще какой xpath по выборке элементов Item
2) Получаем список из XmlNode
3) У каждого элемента XmlNode есть ChildNodes
4) Пробегаетесь вторым циклом по дочерним элементам и берете их Value (или InnerText)
...
Рейтинг: 0 / 0
19.03.2014, 16:20
    #38590882
Arm79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML, извлечение значения элемента
Arm79Vova_1805,

1) .//Item - или еще какой xpath по выборке элементов Item
2) Получаем список из XmlNode
3) У каждого элемента XmlNode есть ChildNodes
4) Пробегаетесь вторым циклом по дочерним элементам и берете их Value (или InnerText)

Код: c#
1.
2.
3.
            XmlNodeList xmlNodeList = doc.SelectNodes(".//Item");
            foreach (XmlNode xmlNode in xmlNodeList)
                Console.WriteLine(String.Join(", ", xmlNode.ChildNodes.Cast<XmlNode>().Select(x => x.Name + "=" + x.InnerText)));
...
Рейтинг: 0 / 0
20.03.2014, 15:20
    #38591975
Vova_1805
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML, извлечение значения элемента
Код: vbnet
1.
WriteLine([String].Join("   4, ", xmlNode.ChildNodes.Cast(Of XmlNode)().[Select](Function(x) Convert.ToString(x.Name) & "=" & Convert.ToString(x.InnerText))))


Вышестоящая строка выводит в виде
Name=Wheat Bread 4, Price=1.29 4, New=
а надо на подобие нижеприведенной строки
Wheat Bread : 1.29
Т.е не выводить
Name=
Price=
Спасибо
...
Рейтинг: 0 / 0
20.03.2014, 15:32
    #38591993
Arm79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML, извлечение значения элемента
Vova_1805,

А что мешает исправить формат строки?
Я же привел в качестве примера, как можно получить значения элементов по отдельности и работать с ними

String.Format("{0}: {1}", xmlNode["Name"].InnerText, xmlNode["Price"].InnerText)
...
Рейтинг: 0 / 0
21.03.2014, 12:30
    #38592792
Vova_1805
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML, извлечение значения элемента
Arm79,
ПРАВИЛЬНО,
Большое СПАСИБО!
и ещё, если не трудно:
Элемент "Name" содержит, допустим, максимум 30 знаков,
Как реализовать вывод второго элемена "Price"
Начиная с 31-ой позиции для разных шрифтов,
Чтобы это было красиво, как на снимке, где
Я вручную выравнял?
СПАСИБО.
...
Рейтинг: 0 / 0
21.03.2014, 12:35
    #38592804
Arm79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML, извлечение значения элемента
Format
пункт "выравнивание"


String.Format("{0, 30}: {1}", xmlNode["Name"].InnerText, xmlNode["Price"].InnerText)
...
Рейтинг: 0 / 0
21.03.2014, 12:44
    #38592816
Arm79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML, извлечение значения элемента
Arm79 Format
пункт "выравнивание"


String.Format("{0, 30}: {1}", xmlNode["Name"].InnerText, xmlNode["Price"].InnerText)
Забыл уточнить, для "красиво" нужно использовать моноширинные шрифты, типа Courier New
...
Рейтинг: 0 / 0
21.03.2014, 15:26
    #38593038
petalvik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML, извлечение значения элемента
Чтобы было красиво
Использовать моноширинные шрифты, как уже сказано.
Или вместо TextBox'а использовать какой-нибудь табличный контрол: выводить данные в разные колонки.
...
Рейтинг: 0 / 0
28.03.2014, 15:42
    #38599311
Vova_1805
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML, извлечение значения элемента
Arm79 , очередная Ваша подсказка
Очень ХОРОША!
Большое СПАСИБО!
А как выравнять слева элемент "Name", как показано
на нижем снимке?
Конечно, использую "Courier New".
Код: vbnet
1.
2.
3.
xmlDisplay.Font = New System.Drawing.Font("Courier New", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))

(String.Format("{0, 30}: {1}", xmlNode("Name").InnerText, xmlNode("Price").InnerText)


СПАСИБО!
...
Рейтинг: 0 / 0
28.03.2014, 15:56
    #38599333
Arm79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML, извлечение значения элемента
Vova_1805,

Вы вообще удосужились прочитать инфу по ссылке, которую я привел?

Код: plaintext
1.
2.
3.
4.
5.
6.
Необязательный компонент alignment — это целое число со знаком, которое служит для 
указания желательной ширины поля форматирования. Если значение alignment меньше длины 
форматируемой строки, то alignment пропускается, и в качестве значения ширины поля используется 
длина форматируемой строки. Форматируемые данные выравниваются в поле по правому 
краю, если alignment имеет положительное значение, или по левому краю, если alignment 
имеет отрицательное значение. При необходимости отформатированная строка дополняется 
пробелами. При использовании компонента alignment необходимо поставить запятую.

String.Format("{0, -30}: {1}", xmlNode("Name").InnerText, xmlNode("Price").InnerText
...
Рейтинг: 0 / 0
28.03.2014, 16:04
    #38599342
Vova_1805
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML, извлечение значения элемента
авторВы вообще удосужились прочитать инфу по ссылке, которую я привел?
Прежде, чем Вас беспокоить,
вчера около 02 ночи закончил смотреть MSDN'2008
РАЗДЕЛ
String.Format
Не знаю где Вы нашли ответы на мои вопросы.
Мне, конечно, очень неудобно спрашивать.
Очент Вам признателен, БОЛЬШОЕ СПАСИБО!
...
Рейтинг: 0 / 0
28.03.2014, 16:08
    #38599352
Arm79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML, извлечение значения элемента
Vova_1805авторВы вообще удосужились прочитать инфу по ссылке, которую я привел?
Прежде, чем Вас беспокоить,
вчера около 02 ночи закончил смотреть MSDN'2008
РАЗДЕЛ
String.Format
Не знаю где Вы нашли ответы на мои вопросы.
Мне, конечно, очень неудобно спрашивать.
Очент Вам признателен, БОЛЬШОЕ СПАСИБО!

Странно, ведь я ссылку давал не на String.Format, а на "Составное форматирование". Это здесь: http://msdn.microsoft.com/ru-ru/library/txafckwd(v=vs.110).aspx


Arm79 Format
пункт "выравнивание"
...
Рейтинг: 0 / 0
28.03.2014, 16:35
    #38599388
Vova_1805
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML, извлечение значения элемента
Arm79,
виноват, теперь нашёл.
Благодарю.

Составное форматирование
.NET Framework 4.5
Другие версии
и т.д.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / XML, извлечение значения элемента / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]