如何将XmlNodeList转换为xml文件?

时间:2019-01-08 14:58:37

标签: xml c#-4.0

我正在尝试使用C#代码将XmlNodeList转换为xml文件。

我已经创建了xml文档,并从中检索了元素列表,现在我希望将该列表转换为xml文件。

<?php
$host = '127.0.0.1';
$db   = 'alimcenter';
$user = 'root';
$pass = '';
$charset = 'utf8mb4';

$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$options = [
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_EMULATE_PREPARES   => false,
];
try {

    // Create a new connection
    $pdo = new PDO($dsn, $user, $pass, $options);

    // Define your SQL statement with placeholders. Do not pass in variables here.
    $sql = "INSERT INTO mat (REF, designation, qte, un, PU, rem, MONTANT, tva, puf) 
            VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
            ON DUPLICATE KEY UPDATE qte = qte + ?";

    $stmt = $pdo->prepare($sql);

    // Finally, bind your variables to the statement and execute it. There are a few ways to bind variables. 
    $stmt->execute([
        $_POST['p1'],
        $_POST['p2'],
        $_POST['p3'],
        $_POST['p4'],
        $_POST['p5'],
        $_POST['p6'],
        $_POST['p7'],
        $_POST['p8'],
        $_POST['p9'],
        $_POST['p1'], // this is the final (10th) placeholder in the "DUPLICATE KEY UPDATE" portion of the statement
    ]);

    $count = $stmt->rowCount();

    echo "Rows affected: {$count}";

} catch (\PDOException $e) {
    throw new \PDOException($e->getMessage(), (int)$e->getCode());
}

下一步是将XmlNodeList转换为xml文件。 我该怎么办?

2 个答案:

答案 0 :(得分:0)

这是一个简单的例子。

    static void Main(string[] args)
    {
        try
        {
            var doc = new XmlDocument();
            doc.Load("MyXmlFile.xml");

            XmlNodeList contactList = doc.GetElementsByTagName("Contact");
            SaveToFile(contactList);
        }
        catch(Exception e)
        {
            Console.WriteLine(e.Message);
        }           
    }            

    static void SaveToFile(XmlNodeList nodeList)
    {
        var xmlBuilder = new StringBuilder();
        xmlBuilder.Append("<Contacts>");
        foreach (XmlNode node in nodeList)
        {
            xmlBuilder.Append(node.OuterXml);
        }

        xmlBuilder.Append("</Contacts>");

        var doc = new XmlDocument();
        doc.LoadXml(xmlBuilder.ToString());
        doc.Save("contacts.xml");
    }

答案 1 :(得分:0)

您确实要简短

XmlNodeList contactList = doc.GetElementsByTagName("Contact");
using (var writer = System.IO.File.CreateText(fileName))
{
  writer.WriteLine($"<Root>{string.Join("",contactList.Cast<XmlNode>().Select(x=>x.OuterXml))}</Root>");  
}