标签: xmldocument

C# - 使用XmlDocument进行Xml操作

在C#中,如何使用XmlDocument将xml中的节点替换为另一个节点.

对于Eg,请考虑以下xml文件.

<Products>
  <Product ProdID="1">
    <Data>abc</Data>
  </Product>
  <Product ProdID="2">
    <Data>def</Data>
  </Product>
</Products>
Run Code Online (Sandbox Code Playgroud)

我们说我需要更换

  <Product ProdID="2">
    <Data>def</Data>
  </Product>
Run Code Online (Sandbox Code Playgroud)

使用新节点

  <Product ProdID="2">
    <Data>xyz</Data>
  </Product>
Run Code Online (Sandbox Code Playgroud)

c# xml xmldocument

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

有没有办法使XmlDocument解析不那么严格

我正在制作一个程序,将其数据存储在XML文件中.当人们编写XML时,他们可以犯下微妙的错误,例如结束注释,-看起来像是<!-- comment ---></>内部添加属性.当然,XML仍然可以正确读取,但是尝试将此文本输入到XmlDocument中会产生语法错误(并且不会被解析).

有没有办法使XmlDocument不那么严格,并使它忽略不会使文档无法解析的违反标准?例如,它显然<!-- comment --->仍然是一个注释,即使它-最终包含的是违反标准规范的).

c# xml xmldocument

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

XMLDocument.Load(),十六进制值0x17,是无效字符

使用xmlDocument.Load()方法加载xml文件时出现以下错误:

在此输入图像描述

我收到此错误,因为我的XML中有一些无效字符"ETB".我怎样才能解决这个问题?该字符是二进制编码图像数据的一部分.

编辑:

<prompt>
   <![CDATA[<FlowDocument xmlns="http://schemas.microsoft.com/something"><Paragraph xmlns="http://schemas.microsoft.com/something"><InlineUIContainer BaselineAlignment="Center">
        <Image Stretch="None" Width="1024" Height="282"><Image.Source><BitmapImage><base64Binary>(Base 64 encoded data containing 'ETB' Text)
   </base64Binary></BitmapImage></Image.Source></Image></InlineUIContainer></Paragraph></FlowDocument>]]>
</prompt>
Run Code Online (Sandbox Code Playgroud)

Base 64 Binary数据是这样的:

iVBORw0KGgoAAAANSUhEUgAABAAAAAEaCAIAAAAACrKOAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAOvwAADr8BOAVTJAAAaz9JREFUeF7tnQVgE03Tx8ODu7u7u7v7i7trcS0Ul + Luxd2Ke7FSrEix4oWixZ3iFErlnd1NLqlQ0sbukv + 938eTnOzO/HavmdmdnY0WHByswgECIAACIAACIAACIAACIGAjBMgBwAECIAACIAACIAACIAACIGAjBFQ2oifUBAEQAAEQAAEQAAEQAAEQYOE/oAACIAACIAACIAACIAACIGA7BOAA2E​​5bQ1MQAAEQAAEQAAEQAAEQwAwA + gAIgAAIgAAIgAAIgAAI2BIBzADYUmtDVxAAARAAARAAARAAAZsnAAfA5rsAAIAACIAACIAACIAACNgSAeU5AEFRaZ4oPfSPikKVaYoqoqIqnpEBAXQGyzZCYJjqw56xrIS ...

这些数据之间有"ETB"

c# xmldocument

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

在前缀元素下没有xmlns的XmlDocument CreateElement

我正在尝试通过使用以下代码中的C#XmlDocument类来编写一个SOAP请求来ebay FindingAPI Web服务:

XmlDocument doc = new XmlDocument();
XmlElement root = (XmlElement)doc.AppendChild(doc.CreateElement("soap", "Envelope", "http://www.w3.org/2003/05/soap-envelope"));
root.SetAttribute("xmlns", "http://www.ebay.com/marketplace/search/v1/services");
XmlElement header = (XmlElement)root.AppendChild(doc.CreateElement("soap", "Header", "http://www.w3.org/2003/05/soap-envelope"));
XmlElement body = (XmlElement)root.AppendChild(doc.CreateElement("soap", "Body", "http://www.w3.org/2003/05/soap-envelope"));
XmlElement request = (XmlElement)body.AppendChild(doc.CreateElement("findItemsByKeywordsRequest"));
XmlElement param = (XmlElement)request.AppendChild(doc.CreateElement("keywords"));
param.InnerText = "harry potter phoenix";
Run Code Online (Sandbox Code Playgroud)

并且,上面代码的XML输出是:

<soap:Envelope xmlns="http://www.ebay.com/marketplace/search/v1/services" xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
    <soap:Header />
    <soap:Body>
        <findItemsByKeywordsRequest xmlns="">
            <keywords>harry potter phoenix</keywords>
        </findItemsByKeywordsRequest>
    </soap:Body>
</soap:Envelope>
Run Code Online (Sandbox Code Playgroud)

但是,由于findItemsByKeywordsRequest元素中的额外xmlns =""属性,服务器无法识别此XML.所需的XML输出应如下所示:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns="http://www.ebay.com/marketplace/search/v1/services">
    <soap:Header/>
    <soap:Body>
        <findItemsByKeywordsRequest>
            <keywords>harry potter phoenix</keywords>
        </findItemsByKeywordsRequest>
    </soap:Body>
</soap:Envelope>
Run Code Online (Sandbox Code Playgroud)

有谁知道我的代码有什么问题,请给我一些提示.谢谢!

c# xml xmldocument prefix xml-namespaces

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

将XML反序列化为WebAPI中的对象

由于某些原因,我将不去讨论,因此无法将对象类型用作webapi控制器的参数。因此,我需要找到一种使用XmlDocument或类似方法将xml对象反序列化为c#对象的方法。

这是我到目前为止的内容:

    public void Post(HttpRequestMessage request)
    {
        var xmlDoc = new XmlDocument();
        xmlDoc.Load(request.Content.ReadAsStreamAsync().Result);
        using (XmlReader xmlReader = new XmlNodeReader(xmlDoc))
        {
            Object obj = new XmlSerializer(typeof(myObject)).Deserialize(xmlReader);
            myObject scp = (myObject)obj;
        } 
    }
Run Code Online (Sandbox Code Playgroud)

不幸的是,这引发了错误。谁能提供一些关于如何将xml反序列化到对象中的建议?

tia

编辑:这是我要反序列化的xml:

<Student>
<studentid>1234</studentid>
<command>post</command>
<posttype>charge</posttype>
<transaction_description>This is a test post to the web api</transaction_description>
<payment_type>CC</payment_type>
<term_code>2013SPRING</term_code>
<amount>432.75</amount>
</Student>
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

System.InvalidOperationException:意外。产生日期:2014年3月19日,星期三,格林尼治标准时间

System.InvalidOperationException:XML文档(1、2)中存在错误。---> System.InvalidOperationException:意外。-在Microsoft.Xml.Serialization.GeneratedAssembly 。 .API.StudentInformationPostController.Post(HttpRequestMessage请求)位于System.Web上lambda_method(Closure,Object,Object [])的C:\ Projects \ CashNetSSO \ Development \ CashNetSSO \ CashNetSSO \ Controllers \ API \ StudentInformationPostController.cs:第23行。 Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor。<> c_ DisplayClassf.b
。 .Serialization.XmlSerializer.Deserialize(Stream stream)
_9(Object实例,对象[] …

c# xmldocument xmlreader deserialization

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

如何提取XML节点并创建新的XML文档

我需要使用Powershell从更大的XML文档中提取节点(和子节点),并创建一个新的独立XML文档,其中只包含提取的XML节点(和子节点); 然后我需要将这个新提取的XML保存在一个文件中.提取的顶级XML节点具有属性.看来我必须设置新的XML对象的XMLDocument值来执行此操作,但XMLDocument是一个只读属性.有人可以帮忙吗?

xml powershell xmldocument

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

Java文档构建器返回Xml字符串的空文档

在此处输入图片说明我在Stackoverflow上尝试了所有可能的答案,但无法解决。

我将以下xml作为字符串:

private static final String xmlStr = "<parameters>\n" +
            "  <parameter>\n" +
            "    <name>emp</name>\n" +
            "    <keyvalue>John Smith</keyvalue>\n" +
            "  </parameter>\n" +
            "  <parameter>\n" +
            "    <name>age</name>\n" +
            "    <keyvalue>22</keyvalue>\n" +
            "  </parameter>\n" +
            "  <parameter>\n" +
            "    <name>Birth Date</name>\n" +
            "    <keyvalue>02/05/1978</keyvalue>\n" +
            "  </parameter>\n" +
            "  <parameter>\n" +
            "    <name>password</name>\n" +
            "    <keyvalue>ye63633</keyvalue>\n" +
            "  </parameter>\n" +
            "</parameters>";
Run Code Online (Sandbox Code Playgroud)

该参数可以用任何字符串替换(我尝试不成功),并且以下代码返回空文档:

 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            factory.setNamespaceAware(true);
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document document = builder.parse(new ByteArrayInputStream(xmlStr.getBytes("UTF-8")));
Run Code Online (Sandbox Code Playgroud)

我尝试用以下方式替换文档:

Document …
Run Code Online (Sandbox Code Playgroud)

java xml parsing xmldocument xml-parsing

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

浏览 XML 子项

我在 C# 上读取 XML 文件时遇到了一些问题。这是我的 XML 文件:

<?xml version = "1.0" encoding="ISO8859-1" standalone="yes" ?>
<SITES>
    <SITE>
        <ERROR_COUNTER>0</ERROR_COUNTER>
        <PROD>0</PROD>
        <LOGINFO>
            <URL>http://site1.com/login</URL>
            <LOGIN>login</LOGIN>
            <PASSWORD>pass</PASSWORD>
            <DELAYMAX>20</DELAYMAX>
        </LOGINFO>
        <EMAIL>
            <TO>dsds@dee.com, dsdsddd@dee.com,dsdds@dee.com</TO>
            <SUBJECT></SUBJECT>
            <BODY></BODY>
            <PATH></PATH>
        </EMAIL>
        <TESTS>
            <TEST>
                <URL>http://site1.com/settings</URL>
                <DELAYMAX>5</DELAYMAX>
            </TEST>
            <TEST>
                <URL>http://site1.com/faq</URL>
                <DELAYMAX>5</DELAYMAX>
            </TEST>
            <TEST>
                <URL>http://site1.com/download-faq-pdf</URL>
                <DELAYMAX>5</DELAYMAX>
            </TEST>
        </TESTS>
    </SITE>
    <SITE>
        <ERROR_COUNTER>0</ERROR_COUNTER>
        <PROD>0</PROD>
        <LOGINFO>
            <URL>http://site2.com/login</URL>
            <LOGIN>login2</LOGIN>
            <PASSWORD>pass2</PASSWORD>
            <DELAYMAX>20</DELAYMAX>
        </LOGINFO>
        <EMAIL>
            <TO>dsds@dee.com, dsdsddd@dee.com,dsdds@dee.com</TO>
            <SUBJECT></SUBJECT>
            <BODY></BODY>
            <PATH></PATH>
        </EMAIL>
        <TESTS>
            <TEST>
                <URL>http://site2.com/settings</URL>
                <DELAYMAX>5</DELAYMAX>
            </TEST>
            <TEST>
                <URL>http://site2.com/faq</URL>
                <DELAYMAX>5</DELAYMAX>
            </TEST>
            <TEST>
                <URL>http://site2.com/download-faq-pdf</URL>
                <DELAYMAX>5</DELAYMAX>
            </TEST>
        </TESTS>
    </SITE>
</SITES>    
Run Code Online (Sandbox Code Playgroud)

所以我希望能够在 C# …

c# xml xmldocument

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

如何在C#,.NET 1.1中删除XmlDocument的结束标记?

如何删除XML文档中元素c的结束标记?

转换后的XML将通过模式验证,因为它内部有空格而被拒绝.我正在使用C#,.NET 1.1(我正在更新遗留应用程序:-().

注意:我不得求助于字符串操作来转换XML文档.

当前:

<main>
  <a>
    <b />
    <c>
    </c>
  </a>
</main>
Run Code Online (Sandbox Code Playgroud)

最后:

<main>
  <a>
    <b />
    <c />
  </a>
</main>
Run Code Online (Sandbox Code Playgroud)

更新1:有关其他详细信息,最终的XML文档将另存为文件,然后另一个进程验证该文件.看来保存的XML已格式化.

我不确定这是否属实:

<a></a> == <a />
Run Code Online (Sandbox Code Playgroud)

c# xml .net-1.1 xmldocument

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

LoadXML在属性中带有":"

我需要操作XML字符串.
字符串是这个:

<div class="addthis_toolbox addthis_default_style ">
<a class="addthis_button_facebook_like" fb:like:layout="button_count"></a>
<a class="addthis_button_tweet"></a>
<a class="addthis_counter addthis_pill_style"></a>
</div>
Run Code Online (Sandbox Code Playgroud)

我以为我会将其转换为XmlDocument,但XmlDocument.LoadXml()会抛出有关":"字符的错误; 这是因为fb:like:layout属性.

我需要做的是addthis:url使用a addthis_toolboxaddthis_buttonclass 为第一个元素添加一个属性.

我非常有信心能找到具有正确类的元素,但我不能确信我可以添加这样的"复合"属性...特别是因为我甚至无法将该东西加载到XmlDocument .

我错过了什么 ?有更好/更简单的方法吗?

谢谢

.net c# xml xmldocument

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