1

私はxml、xquery、xpathの初心者です。それらの間の定義された関係に基づいて、2つの別々のxmlドキュメントを一緒にリンクすることは可能ですか?たとえば、そのようなオンライン小売システムのすべての顧客を含むxmlドキュメントがある場合(短縮例):

<customers>
<customer loyaltyPoints = "20" sex = "male">
    <customerID>1092</customerID>
    <first_name>James</first_name>
    <second_name>Roland</second_name>
    <email_address>jroland@eircom.net</email_address>
    <DOB>
        <day>07</day>
        <month>05</month>
        <year>1970</year>    
    </DOB>
    <orderlist>
        <order>[LINK TO ORDER FROM ORDERS.XML]</order>
    </orderlist>
</customer>

次のような一連の注文を含む2番目のxmlファイル:

<orders>
<order numberOfItems = "2">
    <orderID>384523</orderID>
    <items>
        <item>[LINK TO PRODUCT X IN PRODUCTS.XML]</item>
        <item>[LINK TO PRODUCT Y IN PRODUCTS.XML]</item>
    </items>
</order>
</orders>

顧客を他のドキュメントの注文にリンクできますか、またはその逆はできますか?どうもありがとう

4

1 に答える 1

2

リンクのキーとして使用しているIDを使用する場合は、次の操作を実行できます。

XmlDocument customerDoc = new XmlDocument();
customerDoc.LoadXml("<customers>
                         <customer loyaltyPoints = \"20\" sex = \"male\">
                         <customerID>1092</customerID>
                         <first_name>James</first_name>
                         <second_name>Roland</second_name>
                         <email_address>jroland@eircom.net</email_address>
                         <DOB>
                             <day>07</day>
                             <month>05</month>
                             <year>1970</year>
                         </DOB>
                         <orderlist>
                             <order>384523</order>
                         </orderlist>
                       </customer>
                    </customers>");

XmlDocument ordersDoc = new XmlDocument();
ordersDoc.LoadXml("<orders>
                       <order numberOfItems = \"2\">
                           <orderID>384523</orderID>
                           <items>
                               <item>[LINK TO PRODUCT X IN PRODUCTS.XML]</item>
                               <item>[LINK TO PRODUCT Y IN PRODUCTS.XML]</item>
                           </items>
                        </order>
                   </orders>");

// Select all "customer" nodes
XmlNodeList nodes = customerDoc.SelectNodes("customers/customer");

foreach (XmlNode node in nodes)
{
     XmlNodeList orderList = node.SelectNodes("orderlist");
     foreach (XmlNode orderNode in orderList)
     {
           string orderId = orderNode.InnerText;
           XmlNode orderInOrderDocNode = ordersDoc.SelectSingleNode("orders/order[orderID='" + orderId + "']");
           Console.WriteLine(orderInOrderDocNode.InnerText);
            }
        }

これにより、顧客ドキュメントにあったorderIdを指定して、orders.xmlドキュメントで見つかった注文ノードが出力されます。

これがあなたが探していたものであることを願っています。

于 2012-12-07T19:14:31.800 に答える