首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XmlElement InnerText性质

XmlElement InnerText性质
EN

Stack Overflow用户
提问于 2017-02-22 15:23:05
回答 1查看 1.1K关注 0票数 0

我正在深入研究XmlDocument构建的世界,并想尝试重新构建(至少部分)微软程序UISpy提供的桌面树。

到目前为止,我能够抓取桌面的一个子程序并将其写入XML文档,然后抓取其中的每个子文档并将其写入XML文档。

到目前为止代码看起来是这样的..。

代码语言:javascript
复制
using System.Windows.Automation;
using System.Xml;

namespace MyTestApplication
{
    internal class TestXmlStuff
    {
        public static void Main(string[] args)
        {
            XmlDocument xDocument = new XmlDocument();
            AutomationElement rootElement = AutomationElement.RootElement;
            TreeWalker treeWalker = TreeWalker.ContentViewWalker;

            XmlNode rootXmlElement = xDocument.AppendChild(xDocument.CreateElement("Desktop"));
            AutomationElement autoElement = rootElement.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.NameProperty, "GitHub"));
            string name = autoElement.Current.Name;

            while (autoElement != null)
            {
                string lct = autoElement.Current.LocalizedControlType.Replace(" ", "");
                lct = (lct.Equals("") ? "Cusotm" : lct);
                XmlElement temp = (XmlElement)rootXmlElement.AppendChild(xDocument.CreateElement(lct));
                //temp.InnerText = lct;
                string outerXML = temp.OuterXml;
                rootXmlElement = temp;
                autoElement = treeWalker.GetNextSibling(autoElement);
            }
        }   
    }
}

...and生成的XML文件..。

现在,当我添加一行来更改每个XML元素的InnerText属性时,比如temp.InnerText = lct,我会得到一个奇怪的XML文件。

我所期望的是,每个InnerText将与XML元素的开始和结束标记位于同一行上,但是,除了最后一个元素的InnerText之外,所有的XML都位于新的行中。

所以我的问题是,为什么?我还可以用我的XML元素做些什么,让它们的InnerText出现在同一行中吗?

EN

回答 1

Stack Overflow用户

发布于 2017-02-22 15:48:20

正如我在评论中所说的,XML不是一种显示格式,因此它会被格式化,但是IE选择这样做。

为了更接近您所期望的内容,您可能需要考虑使用属性而不是内部文本:

代码语言:javascript
复制
XmlElement temp = (XmlElement)rootXmlElement.AppendChild(xDocument.CreateElement(lct));
var attr = xDocument.CreateAttribute("type");
attr.Value = lct;
temp.Attributes.Append(attr);

IE在开头元素中显示属性,这对您的目的可能足够好。

从XML的角度来看,您当前创建的内容称为混合内容--您有一个包含文本和其他元素的元素。从层次结构的角度来看,这些文本节点和其他元素在层次结构中占据相同的位置--所以我假设这就是IE将它们显示为“相等”的原因--它们都嵌套在父元素下面,并且处于相同的缩进级别。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42395558

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档