标签: xmldocument

当文件编码为 Unicode 时,C# XmlDocument.Load(string) 失败

我想使用 XmlDocument.Load(String) 方法从 xml 文件加载 XMLDocument,但是当我尝试使用它时出现此错误:

System.Xml.XmlException:“.”(十六进制值 0x00)是无效字符。第 2 行,位置 1。

当我尝试在 Visual Studio 中打开文件时,文件的编码为Unicode,并且 Visual Studio 自动切换为Unicode(UTF-8)。当我使用 *Unicode(UTF-8) 编码保存文件后,程序运行完美。

为什么会发生这种情况并且可以用这种方法加载 Unicode 编码的文件?

c# encoding xmldocument character-encoding

2
推荐指数
1
解决办法
4536
查看次数

Powershell:按元素索引将 XML 节点值选择到变量中

我有这个 PowerShell 脚本,用于解析 XML 文件的不同方面。因此,我想检索特定 XML 节点的值并将其保存到变量中。我想要选择的这个节点在 XML 文件中存在多次,因此我需要能够提及我想要检索的节点的具体编号。

XML 文件:

<lvl1>
    <lvl2>
        <lvl3>
            <lvl4>test1</lvl4>
            <lvl4>test2</lvl4>
            <lvl4>test3</lvl4>
        </lvl3>
    </lvl2>
</lvl1>
Run Code Online (Sandbox Code Playgroud)

我尝试过的Powershell脚本:

1 不返回任何内容并且没有错误

[xml] $response = get-content "FilePath\Resp.xml"
[string] $Var = $response.SelectSingleNode('lvl1/lvl2/lvl3/lvl4[2]').InnerText
Run Code Online (Sandbox Code Playgroud)

2 返回错误:“无法索引到空数组。”

[xml] $response = get-content "FilePath\Resp.xml"
$Var = $response.lvl1.lvl2.lvl3.lvl4[2].'#text'
Run Code Online (Sandbox Code Playgroud)

xml powershell xpath xmldocument xmlnode

2
推荐指数
1
解决办法
1万
查看次数

如何防止System.Xml.XmlDocument转义属性值

我有一个XML文档来处理它包含如下属性:

<action name="foo -> bar">
Run Code Online (Sandbox Code Playgroud)

如果我做一个简单的:

XmlDocument doc = new XmlDocument();
doc.Load(stInPath);
doc.Save(stOutPath);
Run Code Online (Sandbox Code Playgroud)

属性字符串是转义的:

<action name="foo -&gt; bar">
Run Code Online (Sandbox Code Playgroud)

这是我想要阻止的事情.

你知道怎么做(除了之后在xml文件上进行整体查找和替换)?

编辑:这似乎是一种合法的行为,而且我不必担心这一点(参见Jon Skeet的回答)

c# xml xmldocument

1
推荐指数
1
解决办法
1813
查看次数

使用StringBuilder与XmlDocument或创建XML文档相关的优点是什么?

这可能有点代码味道,但我看到它是一些生产代码,即在创建XML文档时使用StringBuilder而不是XmlDocument.在某些情况下,这些是一次写入操作(例如,创建文档并将其保存到磁盘),而其他人正在将构建的字符串传递给XmlDocument,以将XslTransform预先形成为返回给客户端的文档.

如此明显的问题:以这种方式做事是否有价值,是否应该根据具体情况进行,或者这是错误的做事方式?

.net xml stringbuilder xmldocument

1
推荐指数
1
解决办法
974
查看次数

C#将数据添加到xml文件

我正在构建一个Parts应用程序,以便学习C#和WPF.我尝试使用XmlWriter添加新部件时遇到问题.我可以创建xml文件,但无法确定如何添加其他部分.我应该使用像XmlDocument这样的东西吗?这是我的代码背后:

private void btnSave_Click(object sender, RoutedEventArgs e)
    {

        XmlWriterSettings settings = new XmlWriterSettings();
        settings.Encoding = Encoding.UTF8;
        settings.Indent = true;

        using (XmlWriter writer = XmlWriter.Create("f:\\MyParts.xml", settings))
        {
            writer.WriteStartDocument();
            writer.WriteStartElement("MyParts");
            writer.WriteStartElement("parts");
            writer.WriteStartElement("item");
            writer.WriteString(txtbxitem.Text);
            writer.WriteEndElement();

            writer.WriteStartElement("color");
            writer.WriteString(txtbxcolor.Text);
            writer.WriteEndElement();

            writer.WriteStartElement("size");
            writer.WriteString(txtbxsize.Text);
            writer.WriteEndElement();

            writer.WriteEndElement();
            writer.WriteEndDocument();

            writer.Flush();
            writer.Close();

        }
    }
Run Code Online (Sandbox Code Playgroud)

此代码正确创建xml文件和节点,但如何添加其他部分?这是我想要创建的:

 <?xml version="1.0" encoding="ISO-8859-1" ?> 

<MyParts>
  <parts>
    <item>Part1</item>
    <color>Red</color>
    <size>SM</size>
  </parts>
  <parts>
    <item>Part2</item>
    <color>Blue</color>
    <size>XXL</size>
  </parts>
</MyParts>
Run Code Online (Sandbox Code Playgroud)

c# xmldocument xmlwriter

1
推荐指数
1
解决办法
6885
查看次数

将字符串转换为xml节点

我有字符串,它包含从PHP文件返回的xml节点.就像是

<a>1</a><b>0</b><c>4</c>..............
Run Code Online (Sandbox Code Playgroud)

现在我需要找出每个节点有什么值,即a,b,c ......在将此字符串加载到xmlDocument时,我得到的错误就像"有多个根元素".

任何解决方案

php c# xml xmldocument

1
推荐指数
1
解决办法
1643
查看次数

有没有办法让FORCIB允许在XML文件中使用'<'和/或'>'?

我编写了一个C#应用程序,它加载XML文件,解析它们并使用这些信息来运行SQL查询并将结果发送到电子邮件分发列表.

这些XML文件通常由END用户创建.

目前我让他们替换>和<with>和<在SQL中,当然是他们有时忘记的END用户.事实上,他们总是忘记.我更喜欢将查询保存在XML文件中.那么,有没有办法强制/允许在XML文件中使用这些特殊字符?

现在我的用户必须输入:

<?xml version="1.0" encoding="utf-8" ?>
<report>
  <queries>
    <query>
       SELECT * FROM THETABLE WHERE THEVALUE &gt; 100
    </query>
  </queries>
</report>
Run Code Online (Sandbox Code Playgroud)

我希望他们能够输入:

<?xml version="1.0" encoding="utf-8" ?>
<report>
  <queries>
    <query>
       SELECT * FROM THETABLE WHERE THEVALUE > 100
    </query>
  </queries>
</report>
Run Code Online (Sandbox Code Playgroud)

c# xml xmldocument

1
推荐指数
1
解决办法
115
查看次数

如何在Delphi 2009中解析此XML字符串?

这是XML字符串的信息.

<?xml version="1.0" encoding="UTF-8"?>
<string xmlns="http://tempuri.org/">
<statusInfo><vendorClaimID>BRADY12478018AETNA</vendorClaimID>
<statusID>0</statusID><statusDescription>Unvalidated</statusDescription>
</statusInfo></string>
Run Code Online (Sandbox Code Playgroud)

但这就是它的来源..你必须向右滚动才能看到它.

'<?xml version="1.0" encoding="utf-8"?>'#$D#$A'<string xmlns="http://tempuri.org/">&lt;statusInfo&gt;&lt;vendorClaimID&gt;BRADY12478018AETNA&lt;/vendorClaimID&gt;&lt;statusID&gt;0&lt;/statusID&gt;&lt;statusDescription&gt;Unvalidated&lt;/statusDescription&gt;&lt;/statusInfo&gt;</string>'
Run Code Online (Sandbox Code Playgroud)

我已将字符串加载到XMLDoc中,但不知道如何从这里轻松访问值.

var
doc: IXMLDocument;


doc := LoadXMLData(xmlString);
Run Code Online (Sandbox Code Playgroud)

谢谢!

xml delphi xmldocument delphi-2009

1
推荐指数
1
解决办法
1万
查看次数

从c#中的XmlDocument中读回特殊字符

假设我有一个带有转义&符号的xml.然后我如何阅读它,以便结果给我"未转义"文本.

运行以下内容会给我"&" 作为结果.我如何找回'&'

void Main()
{
  var xml = @"
  <a>
    &amp;
  </a>
  ";
  var doc = new XmlDocument();
  doc.LoadXml(xml);
  var ele = (XmlElement)doc.FirstChild;
  Console.WriteLine (ele.InnerXml); 
}
Run Code Online (Sandbox Code Playgroud)

c# xml xmldocument

1
推荐指数
1
解决办法
4856
查看次数

C#根据不需要的属性值列表从XMLDocument中删除整个元素

我有一个XML文件,例如

<Bars1>
    <Bar name='0'>245</Bar>
    <Bar name='1'>180</Bar>
    <Bar name='2'>120</Bar>
    <Bar name='3'>60</Bar>
    <Bar name='4'>0</Bar>
</Bars1>
<Bars2>
    <Bar name='0'>25</Bar>
    <Bar name='1'>10</Bar>
    <Bar name='2'>10</Bar>
    <Bar name='3'>6</Bar>
    <Bar name='4'>0</Bar>
</Bars2>
<Gubbins3>
    <Bar name='0'>45</Bar>
    <Bar name='1'>18</Bar>
    <Bar name='2'>12</Bar>
    <Bar name='3'>4</Bar>
    <Bar name='4'>0</Bar>
</Gubbins3>
Run Code Online (Sandbox Code Playgroud)

和一个List<int>notNeededBarNames,包含例如{1,3}

我已经将XML文件加载到XmlDocumentxmlDoc中,并且想要删除任何"Bar"元素,其中属性"name"是我列表中的整数之一,无论它在XML中可能存在于何处.我的例子很小,但实际上文档和列表可能非常大.

这样做有一个很好的方法吗?我可以"蛮力"它,但我不禁觉得可能有更好的方法.

希望你能帮忙!

c# xpath xmldocument

1
推荐指数
1
解决办法
650
查看次数