Как создать строку с отступом XML из XDocument в C #?

Пара вещей. Сначала у вас есть ненужный цикл. Попробуйте:

while (list($name) = mysql_fetch_row($clientresult)) {

    $temp[] = $name;
}

Чтобы создать свой временный массив.

Во-вторых, части предложения IN являются строками, поэтому, когда вы взорваетесь, вам нужно заключить каждый значение в кавычках:

$thelist = "'". implode("','", $temp) . "'";   

Наконец, в вашем запросе вы передаете $row в предложение IN, вы должны передавать $thelist:

$query = "SELECT count(*) FROM studies WHERE client IN ($thelist) ORDER BY date desc";
$result = mysql_query($query, $connection) or trigger_error("SQL", E_USER_ERROR);

Так что вообще:

$query1 = "SELECT name FROM clients WHERE sector = '$sectorlink'";
$clientresult = mysql_query($query1, $connection) or trigger_error("SQL", E_USER_ERROR);

while (list($name) = mysql_fetch_row($clientresult)) {

    $temp[] = $name;
}

$thelist = "'". implode("','", $temp) . "'"; 

$query = "SELECT count(*) FROM studies WHERE client IN ($thelist) ORDER BY date desc";
$result = mysql_query($query, $connection) or trigger_error("SQL", E_USER_ERROR);
23
задан JC. 3 March 2010 в 22:24
поделиться

4 ответа

XDocument doc = XDocument.Parse(xmlString);
string indented = doc.ToString();
24
ответ дан 29 November 2019 в 01:58
поделиться

Из здесь

XmlDocument doc = new XmlDocument();
doc.LoadXml("<item><name>wrench</name></item>");

// Save the document to a file and auto-indent the output.
XmlTextWriter writer = new XmlTextWriter("data.xml",null);
writer.Formatting = Formatting.Indented;
doc.Save(writer);
9
ответ дан 29 November 2019 в 01:58
поделиться

Еще один вкус того же супа ...; -)

StringWriter sw = new StringWriter();
XmlTextWriter xw = new XmlTextWriter(sw);
xw.Formatting = Formatting.Indented;
doc.WriteTo(xw);
Console.WriteLine(sw.ToString());

Редактировать: спасибо Джону Сондерсу . Вот версия, которая должна лучше соответствовать Создание средств записи XML в MSDN .

using System;
using System.Text;
using System.Xml;
using System.Xml.Linq;

class Program
{
    static void Main(string[] args)
    {
        XDocument doc = new XDocument(
        new XComment("This is a comment"),
        new XElement("Root",
            new XElement("Child1", "data1"),
            new XElement("Child2", "data2")
            )
            );

        var builder = new StringBuilder();
        var settings = new XmlWriterSettings()
        {
            Indent = true
        };
        using (var writer = XmlWriter.Create(builder, settings))
        {
            doc.WriteTo(writer);
        }
        Console.WriteLine(builder.ToString());
    }
}
7
ответ дан 29 November 2019 в 01:58
поделиться

Чтобы создать строку с помощью XDocument (а не XmlDocument), вы можете использование:

        XDocument doc = new XDocument(
            new XComment("This is a comment"),
            new XElement("Root",
                new XElement("Child1", "data1"),
                new XElement("Child2", "data2")
            )
        );

        XmlWriterSettings settings = new XmlWriterSettings();
        settings.Indent = true;
        StringBuilder sb = new StringBuilder();
        using (XmlWriter writer = XmlTextWriter.Create(sb, settings)) {
            doc.WriteTo(writer);
            writer.Flush();
        }
        string outputXml = sb.ToString();

Изменить: Обновлено для использования XmlWriter.Create и StringBuilder и хорошей формы ( с использованием ).

2
ответ дан 29 November 2019 в 01:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: