0

c# を使用して xml をこのようにフォーマットしようとしています。

<House>
   United States
   <Home>
      NewYork
      Lagos
      California
   </Home>
</House>

インデントを強制する方法はありますか? 子要素を持たないタグはインデントせず、次のようなことを行います。

<House>
   United States
   <Home>NewYork Lagos California </Home>
</House>

また

<House>United States </House?
4

3 に答える 3

0

改行定数を値に入れる必要があります。xml に関する限り、"NewYork Lagos California" は 1 つの値です。

于 2013-07-12T18:24:42.743 に答える
0

または、それができない場合、または反復しても問題ない場合は、次のようにすることができます。

(「生」にはマークアップが含まれます)

string[] spliiter = raw.Split(new char[] { ' ', '\n' });
List<string> splitterList = spliiter.ToList<string>(), xml = new List<string>();
splitterList.RemoveAll(x => x == "");
string temp;
for (int i = 0; i < splitterList.Count() - 1; i++)
{
    temp = "";
    if (StringExtensions.ContainsAll(splitterList[i], new string[] { "<", ">" }))
    {
        temp = splitterList[i];
        xml.Add(temp);
    }
    else if (!splitterList[i].EndsWith("\r"))
    {
        if (StringExtensions.ContainsNone(splitterList[i], new string[] { "<", ">" }))
        {
            if (splitterList[i + 1].EndsWith("\r") || splitterList[i + 1].EndsWith("\r\n"))
            {
                 temp = splitterList[i] + " " + splitterList[i + 1];
                 xml.Add(temp);
                 i++;
             }
        }
    }
    else if (splitterList[i].EndsWith("\r") && StringExtensions.ContainsNone(splitterList[i], new string[] { "<", ">" }))
    {
        if (splitterList[i + 1].EndsWith("\r") && StringExtensions.ContainsNone(splitterList[i + 1], new string[] { "<", ">" }))
        {
            temp = splitterList[i];
            do
            {
                temp = temp + " " + splitterList[i + 1];
                i++;
             } while (splitterList[i + 1].EndsWith("\r") && StringExtensions.ContainsNone(splitterList[i + 1], new string[] { "<", ">" }) || StringExtensions.ContainsNone(splitterList[i + 1], new string[] { "<", ">", "\r", "\n" }));
             temp.Replace('\n', ' ');
             xml.Add(temp);
         }
         else
         {
             temp = splitterList[i];
             xml.Add(temp);
         }
     }
 }
 xml = (xml.Select(s => (s.Replace('\r', ' ').Trim()))).ToList();
 string final_xml = string.Join("\n", xml.ToArray());
于 2013-07-12T20:09:11.173 に答える