0

いくつかの XML ファイルを編集する必要があり、これを行うためのスクリプトを作成したいと考えています。XML に関する私の経験はほとんどありません。そのため、皆さんの助けを求めています。

以下の XML には 2 つの輸送命令が含まれています。1 つは正のの要素を持ち、もう 1 つは負の値を持ちます。私がやりたいことは、負のを含むすべての輸送注文に対して:

  • pickup_taskの addressid をdelivery taskの addressid に置き換えます。その逆も同様です。
  • 受け取りタスクのtaskwindow (from_instant とtil_instant) を配送タスクの値に置き換えます。

200 以上の transport_orders を持つファイルのこれらを置き換えることができる VB スクリプトまたはバッチまたは何かを作成することは可能ですか?

ありがとう

<?xml version="1.0" encoding="iso-8859-2"?>
<misu version="2010">
    <transport_orders>
        <transport_order>
            <id>NOCCO/12-006798_1</id>
            <order_number>NOCCO/12-006798_1</order_number>
            <order_date>2012-03-30</order_date>
            <contactId>C04396</contactId>
            <productId>0103-01101025</productId>
            <sum>3135.51</sum>
            <currency_code></currency_code>
            <reference>NOCCO/12-006798</reference>
            <amounts>
                <amount>
                    <unit_code>kg</unit_code>
                    <value>324.00</value>
                </amount>
            </amounts>
            <pickup_task>
                <addressid>BUCU</addressid>
                <task_window>
                    <from_instant>2012-04-20T18:26:43</from_instant>
                    <till_instant>2012-04-20T18:26:43</till_instant>
                </task_window>
            </pickup_task>
            <delivery_task>
                <addressid>C04396_1</addressid>
                <task_window>
                    <from_instant>2012-04-23T00:00:00</from_instant>
                    <till_instant>2012-04-24T00:00:00</till_instant>
                </task_window>
            </delivery_task>
        </transport_order>
        <transport_order>
            <id>NOCCO/12-007016_2</id>
            <order_number>NOCCO/12-007016_2</order_number>
            <order_date>2012-04-02</order_date>
            <contactId>C01137</contactId>
            <productId>0604-08L15000</productId>
            <sum>495.00</sum>
            <currency_code></currency_code>
            <reference>NOCCO/12-007016</reference>
            <amounts>
                <amount>
                    <unit_code>m2</unit_code>
                    <value>-5.00</value>
                </amount>
            </amounts>
            <pickup_task>
                <addressid>SFGH</addressid>
                <task_window>
                    <from_instant>2012-04-20T18:26:43</from_instant>
                    <till_instant>2012-04-20T18:26:43</till_instant>
                </task_window>
            </pickup_task>
            <delivery_task>
                <addressid>C01137_1</addressid>
                <task_window>
                    <from_instant>2012-04-23T00:00:00</from_instant>
                    <till_instant>2012-04-24T00:00:00</till_instant>
                </task_window>
            </delivery_task>
        </transport_order>
    </transport_orders>
</misu>
4

2 に答える 2

0

フィードに戻ると、物事はうまく機能しています。私の知識は限られているとすでに言っているので、コードが何をするのかを常に理解しようとし、自分のニーズに合わせて再現しようとしています。かなり不自由ですが、仕事をするでしょう、確認してください

puelement2  = element.Element("pickup_task").Element("task_window").Element("from_instant")
delelement2 = element.Element("delivery_task").Element("task_window").Element("from_instant")
putask2 = delelement2.Value
delelement2.Value = puelement2.Value
puelement2.Value = putask2

puelement3 = element.Element("pickup_task").Element("task_window").Element("till_instant")
delelement3 = element.Element("delivery_task").Element("task_window").Element("till_instant")
putask3 = delelement3.Value
delelement3.Value = puelement3.Value
puelement3.Value = putask3  

ありがとう。本当に役に立ちます。

于 2012-04-22T07:10:42.570 に答える
0

これでパート 1 は完了です。パート 2 はあなたにお任せします (私は VB に慣れていません)。ご覧のとおり、XML ファイルに「data.xml」という名前を付けました。

Sub Main()
    Dim xdoc As XDocument
    Dim filename As String
    filename = "../../data/data.xml"
    xdoc = XDocument.Load(filename)
    Dim xe As XElement
    xe = xdoc.Root.Element("transport_orders")
    For Each element In xe.Elements("transport_order")
        Dim val As Integer
        val = element.Element("amounts").Element("amount").Element("value").Value
        If (val < 0) Then
            Console.WriteLine(val)
            Dim puelement As XElement
            Dim delelement As XElement
            Dim putask As String
            puelement = element.Element("pickup_task").Element("addressid")
            delelement = element.Element("delivery_task").Element("addressid")
            putask = delelement.Value
            delelement.Value = puelement.Value
            puelement.Value = putask
        End If
    Next
    xdoc.Save(filename)
    Console.ReadLine()
End Sub
于 2012-04-21T07:57:13.127 に答える