извлечение и изменение данных в документе trx (xml) - PullRequest
0 голосов
/ 02 февраля 2012

У меня есть файл .trx (файл результатов модульного теста), который просто внутри xml, и я хочу прочитать файл, сравнить несколько тегов, изменить их при необходимости и сохранить файл снова.

Я обнаружил, что в VB.NET есть несколько инструментов для помощи, поэтому первое, что я делаю, это загружаю документ в документ XML, который, кажется, работает нормально, но я не могу получить доступ к любым нужным мне данным. Сейчас я пытаюсь получить доступ к атрибутам тега counters и изменить их после повторного запуска некоторых тестов.

Так как мне это сделать?

загружает файл:

Dim Doc As XmlDocument = New XmlDocument
Doc.load("testFile.trx")

Попытка доступа к узлу:

Dim attribute As Integer = CInt(xmlTrxMasterDoc.SelectSingleNode("/TestRun/ResultSummary/Counters").Attributes(i).InnerText)

Dim node As XmlNode = xmlTrxMasterDoc.SelectSingleNode("/Counters")
Dim i As Integer = 1
node.Attributes.Item(i).InnerText

XML

<?xml version="1.0" encoding="utf-8"?>
<TestRun someattributes="" >
    <ResultSummary outcome="Failed">
        <Counters total="115" executed="115" passed="110" error="0" failed="5" timeout="0" aborted="0" inconclusive="0" passedButRunAborted="0" notRunnable="0" notExecuted="0" disconnected="0" warning="0" completed="0" inProgress="0" pending="0" />
    </ResultSummary>
</TestRun>

Ответы [ 2 ]

0 голосов
/ 02 февраля 2012

VB.Net имеет XML-литералы, которые упрощают работу с XML-документами.Приведенный ниже код даст вам атрибут total узла Counters:

Dim X = <TestRun someattributes="">
            <ResultSummary outcome="Failed">
                <Counters total="115" executed="115" passed="110" error="0" failed="5" timeout="0" aborted="0" inconclusive="0" passedButRunAborted="0" notRunnable="0" notExecuted="0" disconnected="0" warning="0" completed="0" inProgress="0" pending="0"/>
            </ResultSummary>
        </TestRun>

Console.WriteLine(X.<ResultSummary>.<Counters>.@total)

В противном случае это должно сделать то, что вы ищете:

Dim Doc As XmlDocument = New XmlDocument()
Doc.Load(System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "testFile.trx"))
Dim attribute = Doc.SelectSingleNode("//TestRun/ResultSummary/Counters").Attributes("total").Value
Console.WriteLine(attribute)
0 голосов
/ 02 февраля 2012

Этот документ может помочь вам: http://support.microsoft.com/kb/301225

Также обратите внимание на "Linq to xml", который очень помогает: http://www.aspfree.com/c/a/VB.NET/LINQ-to-XML-Programming-Using-Visual-BasicNET-2008/

...